Para añadir este control de sesión hay que seguir los siguientes cambios:
sesion.cerrando.titulo=Sesi\u00F3n a punto de caducar
sesion.cerrando.texto=Su sesi\u00F3n caducará en
sesion.cerrar=Cerrar sesi\u00F3n
sesion.continuar=Continuar sesi\u00F3n
<h:outputScript library="js" name="sessiontimer.js" />
<fdw:onloadScript> sessionController.ajaxCalled({sessionTime : "#{seamComponentsProperties['duracion.sesion.miliseg']}"}); </fdw:onloadScript> <p:dialog id="cerrandoSesionDlg" widgetVar="cerrandoSesionDlg" resizable="false" modal="true" width="50%" position="top" closable="false" onShow="sessionController.showingClosingDialog('btnInvalidaSesion', 'spanTiempo')"> <f:facet name="header"> <h:outputText value="#{messages['sesion.cerrando.titulo']}" /> </f:facet> <h:form id="formCerrandoSession" prependId="false"> <p:remoteCommand name="refrescaSesion" action="#{org.jboss.seam.web.session.isInvalid}" global="false" /> <p:outputLabel> #{messages['sesion.cerrando.texto']} <span id="spanTiempo"></span> </p:outputLabel> <div class="ui-dialog-buttonpane"> <p:commandButton process="@this" value="#{messages['sesion.continuar']}" global="false" onclick="sessionController.continuedSession();refrescaSesion();return false;" styleClass="btn btn-primary" /> <p:commandButton id="btnInvalidaSesion" process="@this" action="#{org.jboss.seam.web.session.invalidate}" value="#{messages['sesion.cerrar']}" onstart="sessionController.finalizedSession();" oncomplete="PF('cerrandoSesionDlg').hide();PF('noSesionDlg').show();" styleClass="btn btn-secondary" /> </div> </h:form> </p:dialog>
Se puede adaptar el dialogo a nuestra aplicación pero manteniendo el widgetVar=“cerrandoSesionDlg”, las llamadas a sessionController y los identificadores que se incluyen en estas llamadas.
Se espera que el dialogo actual de sesión cerrada siga llamandose igual widgetVar=“noSesionDlg”.
Se valor “#{seamComponentsProperties['duracion.sesion.miliseg']}” obtiene el tiempo de sesión de las propiedades de Componentents, podemos cambiarlo si lo obtenemos de otra forma.
Es posible que en tu aplicación la llamada action=“#{org.jboss.seam.web.session.isInvalid}” den problemas, en tal caso sustitúyelas por llamadas a un bean de tu aplicación que no haga nada action=“#{miBean.accionVacia}”.
Añadir sessiontimer.js en src/main/webapp/resources/js/