| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > немного о JSF и lifecycle |
| Автор: necromancer 16.6.2008, 14:33 |
| допустим у меня есть неких компонет с данными присваеваемыми через value="#{bean.someData}" в методе someData идет выборка из базы, соответсвенно генерируются какие то facesMessages и !ВНИМАНИЕ! делается это частично на основе параметров из url так же есть кнопка с action="#{bean.do}" в методе этой кнопки создается redirect. Внимание! Вопрос! предположим что страница УЖЕ была показана пользователю тогда при нажатии на кнопку получаем цепочку: 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 Как выход можно попробовать использовать кэш вывода на страницу. |