com.sun.faces.enableRestoreView11Compatibility, что использовать вместо этого в JSF 1.2 - PullRequest
7 голосов
/ 11 ноября 2009

Когда у меня есть 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 Ответ

12 голосов
/ 11 ноября 2009

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.ViewExpiredException is a FacesException`, который должен быть выдан, чтобы сигнализировать приложению, что ожидаемое представление не было возвращено для идентификатора представления. Приложение может выбрать выполнение некоторых действий на основе этого исключения.

Чтобы получить ViewExpiredException после истечения срока действия представления, удалите параметр com.sun.faces.enableRestoreView11Compatibility или установите его на false.


Пространство имен com.sun предполагает, что этот параметр является Sun / Mojarra и является производным от конкретной настройки, поэтому он, вероятно, не будет работать со всеми реализациями JSF.

...