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

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


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

Другие вопросы по тегам