quarta-feira, 18 de julho de 2012

JSF - Página de erro após sessão expirada?

Eu estava pegando sempre uma página de erro após muito tempo de inatividade em uma aplicação JSF ou quando reiniciava o servidor e clicava em algum link na página.

Para resolver esse problema chato, usei as seguintes linhas no web.xml da aplicação.

<error-page>
    <exception-type>
        javax.faces.application.ViewExpiredException
    </exception-type>
    <location>
        /index.html
    </location>
</error-page>


Com essas linhas no web.xml a aplicação ao invés de exibir a página de erro quando a view estiver expirada, vai redirecionar o usuário para a página indicada.

JSF - URL não muda após redirect?

Em situações que um método retorna a url de redirect da sua página, como por exemplo:

public String listar() {
    return "/pages/list.xhtml";
}


E o JSF não muda a URL na barra do browser, recomendo a inclusão da seguinte string após a url:  + "?faces-redirect=true"

ficando:

public String listar() {
    return "/pages/list.xhtml"  + "?faces-redirect=true";
}


Fazendo isso, a URL sempre vai mudar. ;-)