| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > [JSF]@ViewScoped как пережить обновление страницы |
| Автор: cuvorov 4.7.2012, 20:18 |
| Добрый день. Есть JSF страница которая обслуживается @ViewScoped бином. На странице есть календарь на котором можно, выставить временной диапазон. Диапаазон хранится в бине в переменных типа Date. Если пользователь обновляет страницу через F5 значения календаря(переменные) сбрасываются на значения по умолчанию. Как сделать так что бы они переживали F5? SessionScope к сожалению не подходит. |
| Автор: Vasay 5.7.2012, 01:47 |
| cuvorov, Сохранить даты в url |
| Автор: korian 13.7.2012, 13:35 |
| А никак. При рендеринге странице есть скрытое поле ViewState. И пока это поле присутствует в запросе, JSF понимает, с каким @ViewScoped бином связать запрос. Если оно отсутствует, то JSF создает новый ViewScoped бин и новый ViewState. Поэтому тут только или SessionScope, или ConversationScope из CDI может подойти... и не без проблем |
| Автор: Vasay 13.7.2012, 14:45 | ||||||
korian,
Не обязательно на странице. ViewState может сохраняться на сервере: web.xml
Наверно, при желании все же можно засунуть даты в URL. Конечно, это будет некий "костыль". Для GWT я такие "костыли" видел, когда состояния компонентов сохраняется в URL. |
| Автор: Vasay 15.7.2012, 01:54 |
| korian, Да, Вы правы. В случае с "server" он пишет в поле "javax.faces.ViewState" некий id по которому связывает данные сохраненные на сервере с конкретной формой для конкретного запроса. Суть не меняется - при обновлении страницы теряем этот id, соответственно теряем ViewScoped бин. Ну тогда только как-то положить данные в URL. |