com.sun.faces.enableRestoreView11Compatibility, что использовать вместо этого в JSF 1.2
Когда у меня есть javax.faces.application.ViewExpiredException, я хочу отправить пользователя на страницу входа.
web.xml
...
<context-param>
<param-name>com.sun.faces.enableRestoreView11Compatibility</param-name>
<param-value>true</param-value>
</context-param>
...
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/errors/sessionExpired.jsf</location>
</error-page>
sessionExpired.jsf
....
<c:redirect url="/index.jsf" />
но enableRestoreView11Compatibility - это метод, который использовался в JSF 1.1, каково решение для JSF 1.2?
1 ответ
com.sun.faces.enableRestoreView11Compatibility
является настройкой JSF 1.2, которая указывает JSF 1.2 вести себя как JSF 1.1.
com.sun.faces.enableRestoreView11Compatibility
== true
означает "не бросай ViewExpiredException
; вместо этого просто создайте новое представление, если срок действия старого истек ".
В заметках IBM о поведении JSF 1.1 сказано:
Это может иметь неблагоприятное поведение, потому что это новое представление, и элементы, которые обычно находятся в представлении, такие как состояние, больше не присутствуют.
Поведение JSF 1.2 по умолчанию определено в спецификации следующим образом:
Если запрос обратный, позвоните
ViewHandler.restoreView()
минуяFacesContext
экземпляр для текущего запроса и идентификатора представления, и возвращаяUIViewRoot
для восстановленного вида. Если возврат изViewHandler.restoreView()
ноль, броситьViewExpiredException
с соответствующим сообщением об ошибке. javax.faces.application.ViewExpiredExceptionis a
FacesException`, который должен быть выдан, чтобы сообщить приложению, что ожидаемое представление не было возвращено для идентификатора представления. Приложение может решить выполнить какое-либо действие на основе этого исключения.
Иметь ViewExpiredException
брошенный, когда представление истекает, удалите com.sun.faces.enableRestoreView11Compatibility
параметр или установите его в false
,
com.sun
namespace предполагает, что этот параметр является Sun/Mojarra и является производным от конкретной настройки, поэтому он, вероятно, не будет работать со всеми реализациями JSF.