Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > немного о JSF и lifecycle


Автор: necromancer 16.6.2008, 14:33
допустим у меня есть неких компонет с данными присваеваемыми через value="#{bean.someData}"
в методе someData идет выборка из базы, соответсвенно генерируются какие то facesMessages
и !ВНИМАНИЕ! делается это частично на основе параметров из url

так же есть кнопка с action="#{bean.do}"

в методе этой кнопки создается redirect.

Внимание! Вопрос! smile

предположим что страница УЖЕ была показана пользователю тогда при нажатии на кнопку получаем цепочку:
Request->RestorePhase->getSomeData->do->REDIRECT->renderResponse->getSomeData->RestorePhase->getSomeData
соответсвенно мало того что происходит 3 обращения за данными так еще и сообщения генерируются некорректно(1 перекрывает 2)

отлично! перенесем событие в doActionListener:
Request->doActionListener->Redirect->RestorePhase->getSomeData->renderResponse->getSomeData

мда, не годится! перенесем редирект в PhaseListener
Request->Redirect->renderResponse->getSomeData
вот тут все вроде бы хорошо! но добавление сообщения в facesmessage не приводит к их показу на странице
Дело в том что непосредственно вывод сообщения стоит выше компонента где происходит генерация сообщений. следовательно h:messages ничего о сообщениях полученных в someData не знает.

это все примерное, но проблема на лицо: множественные запросы к данным + некоректная обработка сообщений

И так, что посоветуете уважаемые? =)

PS Как выход можно попробовать использовать кэш вывода на страницу.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)