Come reindirizzare alla pagina di indice se il tempo della sessione out avvenuto in applicazione JSF
-
23-09-2019 - |
Domanda
Sto usando JSF RI 1.1. Come reindirizzare alla pagina di indice se il tempo della sessione succede fuori?
Soluzione
Ci sono due modi che possono essere combinied:
-
Sfruttate l'intestazione di aggiornamento
<meta>
nell'elemento<head>
HTML in combinazione conHttpSession#getMaxInactiveInterval()
che restituisce il resto di secondi della sessione deve ancora vivere.<meta http-equiv="refresh" content="${pageContext.session.maxInactiveInterval};url=index.jsf">
Questo approccio reindirizzerà automaticamente la pagina alla data
url
quando la sessione scade. -
ViewExpiredException
inweb.xml
:<error-page> <exception-type>javax.faces.application.ViewExpiredException</exception-type> <location>/index.jsf</location> </error-page>
Questo approccio inoltrerà automaticamente la richiesta al data
<location>
quando una richiestaPOST
è stato licenziato (h:commandButton
,h:commandLink
, ecc) mentre la sessione è scaduta.
Si noti che io personalmente preferirei un intermedio "Sessione scaduta" pagina di avviso o di allarme per evitare di "WTF?" esperienze e quindi migliorare l'esperienza dell'utente. Ancor più, avrei così preferiscono sparare un sondaggio ajaxical ogni minuto quando il cliente ha mostrato attività ascoltando il click
e keypress
, in modo che la vita della sessione può essere rimandata di più.
Altri suggerimenti
È possibile utilizzare un Filter
per catturare il particolare eccezione che indica il timeout, e reindirizzare da lì.
JSF2:
<meta http-equiv="refresh" content="#{facesContext.externalContext.sessionMaxInactiveInterval};url=#{request.contextPath}/index.xhtml"/>