|
|
|
jsf: почему создается бин?
|
|||
|---|---|---|---|
|
#18+
Есть страница, которая показывает список всех задач и DataBean, который отвечает за получение данных. На странице имеем след-е Код: xml 1. 2. 3. 4. 5. 6. 7. 8. Так вот, dataBean на этой странице и на других страницах больше не встречается. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. в dao Код: java 1. 2. 3. 4. 5. 6. 7. Этот метод вызывается только в DataBean и только в одном месте (см. выше). Также другие методы из дао не ипользуют этот метод. И другие бины не используют этот метод. Данных в базе нет, т.е. из этого метода будет "activeTasks is empty". Когда мы открываем в браузере страницу, то понятно, что в логах нам покажет автор07:30:43,843 INFO [MyLog] (http-localhost-127.0.0.1-8080-1) activeTasks is empty Но когда переходим по ссылке, то почему-то появляется еще одни вывод, что на мой взгляд не логично автор07:30:48,671 INFO [MyLog] (http-localhost-127.0.0.1-8080-1) activeTasks is empty С какого перепуга берется этот вывод, если на странице, на которую мы переходим, getTasks(...) не вызывается, т.е. на новой странице не встречается dataBean, и другие бины, встречающиеся на этой странице не используют getTasks(...) ? контейнер JBoss ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 09:18 |
|
||
|
jsf: почему создается бин?
|
|||
|---|---|---|---|
|
#18+
Думаю, Firebug может показать почему. Возможно, по клику на гиперссылку делается не сразу переход по ссылке, а сначала POST на страницу со списком задач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 09:45 |
|
||
|
jsf: почему создается бин?
|
|||
|---|---|---|---|
|
#18+
установлен firebug. не понятно где там это показывает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 10:09 |
|
||
|
jsf: почему создается бин?
|
|||
|---|---|---|---|
|
#18+
в окошке All при переходе по страницам не выдает никакую информацию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 10:11 |
|
||
|
jsf: почему создается бин?
|
|||
|---|---|---|---|
|
#18+
Так работает jsf - на сервере восстанавливается предыдущее состояние (view), валидируются и применяются новые значения, вызываются xxxListener-ы, и только потом запрашивается значение action. Поскольку бин @RequestScoped, его состояние нигде не сохраняется между запросами, и каждый раз воссоздается заново (самая первая фаза из перечисленных). Поэтому каждый раз вызывается dao.getTasks. Чтобы избежать повторных вызовов, нужно либо сохранять состояние (@ViewScoped, @SessionScoped, saveState теги и т.п.), либо, если позволяют условия задачи, указать, что данная ссылка должна игнорировать сохраненное состояние и внесенные изменения (imediate="true") Код: html 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 10:22 |
|
||
|
jsf: почему создается бин?
|
|||
|---|---|---|---|
|
#18+
rema174в окошке All при переходе по страницам не выдает никакую информацию Закладка Консоль, кнопку "Не очищать" надо сделать нажатой, чтобы оставалась история при переходах по страницам. Еще можно посмотреть access-логи сервера. Там тоже можно обнаружить "лишний" POST. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 10:38 |
|
||
|
jsf: почему создается бин?
|
|||
|---|---|---|---|
|
#18+
h:commandLink всегда работает через POST, можно никуда не заглядывать. Если нужна get-ссылка, то лучше использовать тег h:link ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 11:12 |
|
||
|
jsf: почему создается бин?
|
|||
|---|---|---|---|
|
#18+
да, с файрбагом вроде понял immediate true - немного не про эту ситуацию при ViewScoped выскакивает аж шесть новых строк в логах... все ок при SessionScoped, но хотелось как можно меньше использовать его и все ок для RequestScoped при h:link, только не понял - при get запросе игнорируется jsf цикл и не восстанавливается предыдущее состояние (view)на сервере? только есть еще кое-что, на странице так Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. хотелось бы оставить p:commandButton, так как там свой стиль, все дела, как тут быть? ведь эта кнопка тоже работает через post ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 12:02 |
|
||
|
jsf: почему создается бин?
|
|||
|---|---|---|---|
|
#18+
rema174, Код: xml 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 12:18 |
|
||
|
jsf: почему создается бин?
|
|||
|---|---|---|---|
|
#18+
У p:button еще есть атрибут href. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 12:19 |
|
||
|
jsf: почему создается бин?
|
|||
|---|---|---|---|
|
#18+
да! то что доктор прописал, спасибо! я как-то не встречал эту разницу между commnadButton и Button, пойду почитаю что ли имхо, вполне устраивает и атрибут outcome у p:button получается get-запрос идет в обход jsf цикла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 12:27 |
|
||
|
jsf: почему создается бин?
|
|||
|---|---|---|---|
|
#18+
rema174, "классический" jsf цикл включает 6 фаз, самая последняя - render_view. В GET-запросах выполняется только эта последняя фаза, и никаких действий по восстановлению предыдущего состояния не происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 12:42 |
|
||
|
jsf: почему создается бин?
|
|||
|---|---|---|---|
|
#18+
ivanra, ясно. видно этот момент не так уж был и очевиден если: mkyong My thought… No really sure why JSF 2.0 released this “h:button” tag, the JavaScript redirection is not practical, especially in JavaScript disabled browser. The best is integrate the “outcome” attribute into the “h:commandButton” tag, hope it can be done in future release. а ведь сделали именно для get ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 12:47 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=173&tid=2127122]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 443ms |

| 0 / 0 |
