Como faço para que quando a sessão da aplicação expirar, automaticamente seja feito um redirecionamento para uma página informando que a sessão foi expirada?
Só consigo fazer isso quando há alguma interação, por exemplo, quando o usuário clica em algum botão, queria que a página fosse redirecionada automaticamente.
Eu uso o componente idleMonitor do Primefaces, mas quando a sessão expira, eu mostro um dialog modal. Você poderia colocar um botão para sair do dialog e redirecionar para outra página. Assim a pessoa pode ler a mensagem dizendo que expirou e depois ser redirecionada.
M
mnemoniac
Legal!! Era isso mesmo que eu queria!!
Agora como eu insiro um botão dentro dessa caixa de dialogo?
Muito obrigado!!
R
Roselito_Favero_da_S
Dá uma olhada no exemplo do p:commandLink
M
mnemoniac
me desculpa, sou novo ainda nisso.
O modal já está aparecendo, nele eu queria colocar o botão para logar novamente.
Tenho o arquivo IdleMonitorController que esta da seguinte forma
@SessionScoped@NamedpublicclassIdleMonitorControllerimplementsSerializable{publicvoididleListener(){System.out.println("aqui ok");FacesContext.getCurrentInstance().addMessage(null,newFacesMessage(FacesMessage.SEVERITY_WARN,"Sua sessão expirou","Por favor faça o login novamente"));}}
Tentei colocar o botão dentro do p:idleMonitor mas não aparece dentro do modal.
Como devo proceder?
Obrigado!
R
Roselito_Favero_da_S
Você olhou o showcase do Primefaces?
<p:idleMonitortimeout="10000"onidle="PF('idleDialog').show()"onactive="PF('idleDialog').hide()"/><p:dialogheader="What's happening?"resizable="false"widgetVar="idleDialog"modal="true"width="400"><h:outputTextvalue="Dude, are you there?"/></p:dialog>
Veja que tem um dialog... é nele que você coloca o commandLink.
M
mnemoniac
Roselito Fávero da Silva:
Você olhou o showcase do Primefaces?
<p:idleMonitortimeout="10000"onidle="PF('idleDialog').show()"onactive="PF('idleDialog').hide()"/><p:dialogheader="What's happening?"resizable="false"widgetVar="idleDialog"modal="true"width="400"><h:outputTextvalue="Dude, are you there?"/></p:dialog>
Veja que tem um dialog... é nele que você coloca o commandLink.
não sei porque, mas o SimpleIdleMonitor não está funcionando aqui, seria apenas colar este código na página xhtml certo?
<p:idleMonitortimeout="10000"onidle="PF('idleDialog').show()"onactive="PF('idleDialog').hide()"/><p:dialogheader="What's happening?"resizable="false"widgetVar="idleDialog"modal="true"width="400"><h:outputTextvalue="Dude, are you there?"/></p:dialog>
No AjaxIdleEvent funciona de boa, porém não sei inserir o botão usando ele.
Obrigado!!
R
Roselito_Favero_da_S
Pode ser versão do Primefaces. Se for 3.x, mude onidle=“PF(‘idleDialog’).show()” para onidle=“idleDialog.show()”
E cuidado que no exemplo, ao mover o mouse ele fecha o dialog - você tem que tirar o trecho do onactive e colocar o botão que você quer no dialog.
M
mnemoniac
Roselito Fávero da Silva:
Pode ser versão do Primefaces. Se for 3.x, mude onidle=“PF(‘idleDialog’).show()” para onidle=“idleDialog.show()”
E cuidado que no exemplo, ao mover o mouse ele fecha o dialog - você tem que tirar o trecho do onactive e colocar o botão que você quer no dialog.
Legal Roselito, muito obrigado!! Era isso mesmo, estou usando o primefaces 3.5
Consigo remover o botão fechar do modal?
Eu setei o timeout do idleMonitor para 10 minutos e o session-timeout do web-xml para 1 minuto para testar, passado mais de 1 minuto não é lançado a exceção de ViewExpiredException, assim a página continua ativa “por baixo” do modal, se o usuario clica em fechar ele consegue continuar usando o sistema, o que não deveria acontecer.
R
Roselito_Favero_da_S
coloque closable=“false” (acho que é isso) que só consegue sair do modal pelo seu botão.