Redirect automático - JSF + Primefaces

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.

Já setei no web.xml

<error-page> <exception-type>javax.faces.application.ViewExpiredException</exception-type> <location>/faces/expirado.xhtml</location> </error-page>

obrigado!!

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.

Legal!! Era isso mesmo que eu queria!!
Agora como eu insiro um botão dentro dessa caixa de dialogo?

Muito obrigado!!

Dá uma olhada no exemplo do p:commandLink

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

[code]
@SessionScoped
@Named
public class IdleMonitorController implements Serializable {

public void idleListener() {  
    System.out.println("aqui ok");
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,   
                                    "Sua sessão expirou", "Por favor faça o login novamente"));  

}    

}[/code]

e o xhtml:

[code]<p:growl id=“messages” showDetail=“true” sticky=“true” />

<p:idleMonitor timeout="5000">  
    <p:ajax event="idle" listener="#{idleMonitorController.idleListener}" update="messages"/>                   
</p:idleMonitor>  [/code]

Tentei colocar o botão dentro do p:idleMonitor mas não aparece dentro do modal.

Como devo proceder?
Obrigado!

Você olhou o showcase do Primefaces?

[code]<p:idleMonitor timeout="10000"
onidle=“PF(‘idleDialog’).show()” onactive=“PF(‘idleDialog’).hide()”/>

<p:dialog header=“What’s happening?” resizable="false"
widgetVar=“idleDialog” modal=“true” width=“400”>
<h:outputText value=“Dude, are you there?” />
</p:dialog> [/code]

Veja que tem um dialog… é nele que você coloca o commandLink.

[quote=Roselito Fávero da Silva]Você olhou o showcase do Primefaces?

[code]<p:idleMonitor timeout="10000"
onidle=“PF(‘idleDialog’).show()” onactive=“PF(‘idleDialog’).hide()”/>

<p:dialog header=“What’s happening?” resizable="false"
widgetVar=“idleDialog” modal=“true” width=“400”>
<h:outputText value=“Dude, are you there?” />
</p:dialog> [/code]

Veja que tem um dialog… é nele que você coloca o commandLink.[/quote]

não sei porque, mas o SimpleIdleMonitor não está funcionando aqui, seria apenas colar este código na página xhtml certo?

[code]<p:idleMonitor timeout="10000"
onidle=“PF(‘idleDialog’).show()” onactive=“PF(‘idleDialog’).hide()”/>

<p:dialog header=“What’s happening?” resizable="false"
widgetVar=“idleDialog” modal=“true” width=“400”>
<h:outputText value=“Dude, are you there?” />
</p:dialog>[/code]

No AjaxIdleEvent funciona de boa, porém não sei inserir o botão usando ele.

Obrigado!!

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.

[quote=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.[/quote]

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.

coloque closable=“false” (acho que é isso) que só consegue sair do modal pelo seu botão.

Perfeito!! Muito obrigado pela ajuda Roselito!!!