Problema com Navegação em JSF usando o PrimeFaces e Erro de Outcome


Ao desenvolver uma aplicação JSF utilizando PrimeFaces, me deparei com um erro ao tentar implementar um botão para redirecionamento de páginas usando o componente <p:button>.

<p:button id="errorButton" value="Voltar" outcome="index.xhtml"></p:button>

O objetivo era que o botão “Voltar” redirecionasse o usuário para a página index.xhtml. No entanto, o redirecionamento não estava funcionando, resultando no seguinte erro:

JSF1073: javax.faces.FacesException obtido durante o processamento de RENDER_RESPONSE 6: 
UIComponent-ClientId=, Message=Could not resolve NavigationCase for outcome: index.xhtml

Causa do Erro

O erro ocorreu porque o JSF não conseguiu resolver o caminho correto para o arquivo index.xhtml. A mensagem de erro indicava que não foi possível encontrar um NavigationCase para o outcome index.xhtml.

No código original, o botão foi implementado da seguinte maneira:

<p:button id="errorButton" value="Voltar" outcome="index.xhtml"></p:button>

A questão estava no fato de que o arquivo index.xhtml não estava na pasta raiz do projeto (/webapp), mas sim em um subdiretório chamado /pages/public. Como resultado, o JSF não conseguiu localizar o arquivo usando o outcome relativo index.xhtml, gerando o erro.

Estrutura do projeto:

Solução

Para resolver o problema, foi necessário especificar o caminho absoluto para o arquivo index.xhtml. Ao invés de usar apenas o nome do arquivo, foi necessário definir o caminho completo a partir da pasta /webapp.

A correção foi feita da seguinte forma:

<p:button id="errorButton" value="Voltar" outcome="/pages/public/index.xhtml"></p:button>

Esse tipo de erro é comum quando se trabalha com múltiplos diretórios para organizar as páginas de uma aplicação JSF. Para evitar esse problema no futuro:

  • Sempre verifique o diretório onde os arquivos .xhtml estão localizados.
  • Use outcomes absolutos (/caminho/para/pagina.xhtml) ao trabalhar com subdiretórios para garantir que o JSF localize a página correta.

Referências