Pergunta

Eu tenho um aplicativo JSF2 simples usando facelets. Meu web.xml está definido da seguinte forma:-

<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping> 

Quero definir o aplicativo como padrão para a página de boas -vindas que é /Pages/login.xhtml. Parece que não consigo obter a configuração do arquivo de boas-vindas para pegar isso ao ir à raiz do contexto no navegador.

Minha configuração de boas-vindas web.xml é a seguinte:-

<welcome-file-list>
<welcome-file>/pages/login.jsf</welcome-file>
</welcome-file-list>

Como forço a página de boas-vindas a Goto a página de login e garantir que ela passa pelo servlet do rosto?

Se eu usar o seguinte, a página é exibida, mas ela não passou pelo servlet do rosto e os componentes do rosto não são renderizados:-

<welcome-file-list>
<welcome-file>pages/login.xhtml</welcome-file>
</welcome-file-list>

Qualquer ajuda apreciada!

Foi útil?

Solução

Você deve criar um arquivo Login.jsf vazio, adjacente ao seu arquivo login.xhtml. Por alguma razão, esse hack é necessário para enganar o contêiner do servlet a pensar que seu arquivo de boas -vindas existe.

Nota: A resposta servida ainda será a resposta JSF usando seu arquivo login.xhtml, não o arquivo vazio login.jsf que você criar.

Outras dicas

Informações adicionais para a solução original.

Essa é apenas uma necessidade de compatibilidade com versões anteriores dos contêineres do servlet antes da versão 3. Uma vez em execução no Glassfish 3.1 ou no Tomcat 7, por exemplo, não é mais necessário ter um arquivo vazio como este. Realizei testes para verificar o uso do Tomcat 6 e Tomcat 7. No passado, eu havia executado testes com Glassfish e assumi que uma edição do Tomcat 6 estava em jogo, pois executamos nosso software no Tomcat 6 no momento atual e não é um contêiner de servlet 3.0. Eu estava usando uma página JSP com redirecionamento, mas depois de passar completamente para as faces, eu não gostei de ter uma página JSP. Esta é uma ótima solução para o curto prazo até que estejamos em um recipiente de servlet 3.0. A verdadeira razão pela qual funciona é que tudo está sendo feito com a entrada web.xml é uma verificação na existência do arquivo. O trabalho real é tratado para a JSF, pois capta a solicitação para a página FACES, portanto, nunca atinge essa página vazia para nada.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top