Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JSF вызывает getter/setter несколько раз 
:(
    Опции темы
introtel
Дата 11.10.2009, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 25.9.2008

Репутация: нет
Всего: нет



Доброго времени суток!

В JSF getterы и setterы bean-ов вызываются несколько раз за время загружения страницы. Кто нибудь может обьяснить зачем и почему?
из Гугла узнал что "вызывается несколько раз за время рендеринга, валидации и еще чего-то там", но в чем причина реализации такого обращения?

Заранее спасибо!
PM MAIL   Вверх
ivg
Дата 11.10.2009, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


Профиль
Группа: Участник
Сообщений: 686
Регистрация: 8.2.2006
Где: Екатеринбург

Репутация: 32
Всего: 81



В цикле обработки запроса состояние бина (читай значения полей объекта) может изменяться в следствие работы какого-то кода бина. Актуальные значения можно получить только вызвав соотв. геттер.
PM MAIL   Вверх
powerOn
Дата 11.10.2009, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 28
Всего: 159



Цитата(introtel @  11.10.2009,  01:44 Найти цитируемый пост)
В JSF getterы и setterы bean-ов вызываются несколько раз за время загружения страницы. Кто нибудь может обьяснить зачем и почему?
из Гугла узнал что "вызывается несколько раз за время рендеринга, валидации и еще чего-то там", но в чем причина реализации такого обращения?


Как тебе уже сказал гугл, обработка запроса в JSF имеет в какой-то степени сложную логику, состоящую из нескольких фаз. На каждой из них JSF нужно выполнять определенные действия: конвертировать/валидировать значения запроса, строить/восстанавливать/рендерить view, выполнять action-ы и т.д. Ну и, соответственно, для этого необходимо получать/устанавливать данные бина.
А, собственно, почему этот вопрос так беспокоит? Желаете гет/сет вызовы использовать как часть бизнес логики?



--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Bandit
Дата 12.10.2009, 01:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 27.11.2007
Где: Минск

Репутация: нет
Всего: нет



powerOn, если честно, то я чаще всего именно их и использую в качестве обработчиков бизнес логики... Верно ли такое использование get, set - ов? 
Есть ли какие-то правила обработки в бинах или условные рекомендации? 
PM MAIL   Вверх
powerOn
Дата 12.10.2009, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 28
Всего: 159



Цитата(Bandit @  12.10.2009,  02:50 Найти цитируемый пост)
powerOn, если честно, то я чаще всего именно их и использую в качестве обработчиков бизнес логики... Верно ли такое использование get, set - ов? 
Есть ли какие-то правила обработки в бинах или условные рекомендации?  


Для обработки бизнес логики существуют init и action-методы, а так же listener-ы. Порядок вызовов гет/сет методов нигде не обусловлен, каждая реализация JSF может их дергать когда угодно и в каком угодно количестве, что естественно может повлиять на логику вашей программы.  



--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Bandit
Дата 12.10.2009, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 27.11.2007
Где: Минск

Репутация: нет
Всего: нет



powerOn,  можно ли глянуть пример твоего кода... Особенно что касается init методов и листнеров.
 smile 
PM MAIL   Вверх
introtel
Дата 12.10.2009, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 25.9.2008

Репутация: нет
Всего: нет



Спасибо большое за ответ.
powerOn, а на производительность это никак не влияет? нельзя было с самой реализации организовывать кеширование, а то как видно все равно люди проверяют на "налл"-ость и только потом возрващают (так называемое lazy loading?)
был один баг связанный с тем что в JS динамически добвалялся параметр...несколько разsmile 
конечно бизнес логику туда пихать не надо...но проблема была в том, что организованно что-то типа трекинг системы, и должно это все работать например именно когда вызывается определенный геттер. простая проверка кончено спасает...но все-такки smile
PM MAIL   Вверх
powerOn
Дата 12.10.2009, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 28
Всего: 159



Цитата(Bandit @  12.10.2009,  13:33 Найти цитируемый пост)
powerOn,  можно ли глянуть пример твоего кода... Особенно что касается init методов и листнеров.


Немного не понял, что именно интересует. Init - методы реализуются либо через spring, либо аннотацией @PostConstruct. Смотри документацию. ActionListeners это вообще азы JSF, типа того: 

Код

<h:commandButton value="MyButton" action="#{SomeBean.someAction}" />



Цитата(introtel @  12.10.2009,  21:19 Найти цитируемый пост)
powerOn, а на производительность это никак не влияет? нельзя было с самой реализации организовывать кеширование, а то как видно все равно люди проверяют на "налл"-ость и только потом возрващают (так называемое lazy loading?)


мне трудно сказать насколько сильно это влияет на производительность, не не занимался подобного рода анализом. 

Это сообщение отредактировал(а) powerOn - 12.10.2009, 23:08


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0682 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.