|
|
|
JSF dataTable многократный вызов метода бина
|
|||
|---|---|---|---|
|
#18+
Уважаемые гуру, просветите пожалуйста чайника - начал изучать JSF и такая засада. При старте приложения при построении грида вызывается 3 раза метод getNames(), при обновлении странички кнопкой "Test" getNames() вызывается 12 раз. JSF менял разные версии. Количество этих повторных вызовов не зависит от кол-ва строк или столбцов. Почему так? код: Код: 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. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2016, 15:49 |
|
||
|
JSF dataTable многократный вызов метода бина
|
|||
|---|---|---|---|
|
#18+
JSF Lifecycle , он такой. Основной смысл в том, что кроме модели на сервере сохраняется/восстанавливается представление, и эта работа с представлением требует многократных обращений к модели (на каждой фазе). Поэтому в jsf приложении желательно, чтобы get-методы были чистыми геттерами, в все, что касается жизненного цикла, происходило в слушателях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2016, 17:04 |
|
||
|
JSF dataTable многократный вызов метода бина
|
|||
|---|---|---|---|
|
#18+
ivanra, я почти ничего не понял, отсюда дилетанский вопрос - я понял что в getName() методе запрос к серверу БД делать нельзя - иначе сервак быстро ляжет от 12 запросов вместо одного. Куда можно поместить запрос к серверу БД чтобы он вызывался на построение таблицы только 1 раз? И как это связать с методом или полем бина jsf? Использую jDBC и результат получаю в CachedRowSet. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2016, 17:16 |
|
||
|
JSF dataTable многократный вызов метода бина
|
|||
|---|---|---|---|
|
#18+
Геттеры должны быть чистыми геттерами, если совсем никак, то хотя бы сделать их ленивыми: Код: java 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2016, 17:24 |
|
||
|
JSF dataTable многократный вызов метода бина
|
|||
|---|---|---|---|
|
#18+
Можно ли такой запрос к серверу БД поместить в конструктор бина а затем присвоить значения полям, или лучше какой другой способ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2016, 17:25 |
|
||
|
JSF dataTable многократный вызов метода бина
|
|||
|---|---|---|---|
|
#18+
Нет, в общем случае надо считать, что бин создается при каждом запросе пользователя, и если он @SessionScoped, то в него записывается сохраненное ранее состояние. Помещать что-то в конструктор бесполезно и даже вредно. Всё, что происходит в программе - это ответ на события, вся работа должна идти от слушателей, для этого в jsf имеется куча методов и интерфейсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2016, 17:40 |
|
||
|
JSF dataTable многократный вызов метода бина
|
|||
|---|---|---|---|
|
#18+
Микола Питерский, http://stackoverflow.com/questions/7961475/why-are-jsf-managedbean-methods-executed-more-than-once-while-they-are-intended ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2016, 17:51 |
|
||
|
JSF dataTable многократный вызов метода бина
|
|||
|---|---|---|---|
|
#18+
ivanraГеттеры должны быть чистыми геттерами, если совсем никак, то хотя бы сделать их ленивыми: Код: java 1. 2. 3. 4. 5. 6. а если, в то время как names != null, произошло изменение на бэкенде - показывать юзеру старые данные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2016, 19:00 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2124056]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
9ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 360ms |

| 0 / 0 |
