2009-11-11 22 views
7

Cuando tengo javax.faces.application.ViewExpiredException Deseo enviar al usuario a la página de inicio de sesión.com.sun.faces.enableRestoreView11Compatibility qué uso en su lugar en JSF 1.2

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" /> 

pero enableRestoreView11Compatibility es el método que se utilizó en JSF 1.1, lo que es la solución para JSF 1.2?

Respuesta

12

com.sun.faces.enableRestoreView11Compatibility es una configuración JSF 1.2 que le dice a JSF 1.2 que se comporte como JSF 1.1.

com.sun.faces.enableRestoreView11Compatibility == true significa "no arroje un ViewExpiredException; en su lugar, simplemente cree una nueva vista si la anterior ha expirado".

El IBM notes sobre el comportamiento de JSF 1.1 decir:

Esto puede tener comportamientos adversos, ya que es un nuevo punto de vista, y los elementos que son por lo general en la vista, como el estado, ya no estará allí.

El valor predeterminado JSF 1.2 comportamiento se define en the spec como este:

Si la petición es una devolución de datos, llame ViewHandler.restoreView(), pasando la instancia FacesContext de la solicitud actual y la vista identificador, y el retorno de una UIViewRoot para la vista restaurada. Si el resultado de ViewHandler.restoreView() es nulo, arroje un ViewExpiredException con un mensaje de error apropiado. javax.faces.application.ViewExpiredException is a FacesException` que se debe lanzar para indicar a la aplicación que la vista esperada no se devolvió para el identificador de vista. Una aplicación puede elegir realizar alguna acción basada en esta excepción.

Para tener una ViewExpiredException inicia cuando expira la vista, quitar el parámetro com.sun.faces.enableRestoreView11Compatibility o se establece en false.


com.sun El espacio de nombres sugiere que el parámetro es un Sol/Mojarra y la configuración específica de la implementación derivada, por lo que probablemente no funcionará con todas las implementaciones de JSF.

+1

Pensé que puedo usar ... para redirigir al usuario a la página de inicio de sesión, pero sin este parámetro de compatibilidad esto no funciona. Necesito escribir mi PhaseListener para hacer esta redirección, o tal vez hay alguna manera fácil. – aindl

+0

¿Esta configuración sigue siendo válida en JSF 2.2 o hay alguna otra opción? –

Cuestiones relacionadas