Mapeamentos no JSF (web.xml)

1 resposta
roger10000

Pessoal,

Estou començando uma aplicação usando o framework JSF, mas confesso que não estou entendendo alguns comportamentos do FacesServlet.

O problema é o seguinte,

tenho o seguinte web.xml

<?xml version="1.0" encoding="UTF-8"?> com.sun.faces.verifyObjects false com.sun.faces.validateXml true javax.faces.STATE_SAVING_METHOD client Faces Servlet javax.faces.webapp.FacesServlet 1 Faces Servlet /inicio 30 JSP/login.jsp FilterLogin br.gov.ans.filter.FilterLogin FilterLogin /index.ans REQUEST

mas o que está acontecendo é o seguinte, quando vou no browser e coloco “http://localhost:8080/RpcWebWar/inicio” ele dá “http 404” se eu coloco “http://localhost:8080/RpcWebWar/index.ans” ele exibe a pagina welcome e não passa pelo filtro e se eu coloco “http://localhost:8080/RpcWebWar/” ele exibe a pagina welcome.

O certo seria “http://localhost:8080/RpcWebWar/inicio” ir para welcome
e quando fosse “http://localhost:8080/RpcWebWar/index.ans” passar pelo filtro.

Conto com a ajuda de todos.

1 Resposta

smkk

certo, vou tentar te explicar o “por que” das coisas:

<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/inicio</url-pattern>
</servlet-mapping>

aqui você está dizendo que quer que todas as requições que combinem com a regex “/inicio” sejam redirecionadas para o FacesServlet.

<filter-mapping>
<filter-name>FilterLogin</filter-name>
<url-pattern>/index.ans</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>

aqui você diz que as requisições que combinem com “/index.ans” sejam redirecionadas para o filtro FilterLogin.

bom, agora vamos a cada URL:

o FacesServlet ira procurar por uma pagina inicio.jsp dentro de seu .war, por isso o erro 404.

como está configurado era para ele passar pelo filtro, porém não ir para página nenhuma, logo que não localizaria nenhuma página index.ans, a não ser que seu filtro redirecione a requisição.

esta requisição não passa por nenhum filtro, apenas procura por um index.html, ou as páginas de welcome.

bom, primeiro você deve mudar o url-pattern do FacesServlet para alguma expressão do tipo “.faces", ou ".ans”, para que o filtro se aplique a todas as páginas JSP ou XHTML (não sei o seu caso), caso contrário se manter uma String sem REGEXP ele não se aplicará a todas as páginas.

&lt;servlet-mapping&gt; &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt; &lt;url-pattern&gt;*.ans&lt;/url-pattern&gt; &lt;/servlet-mapping&gt;

isto fará com que uma requisição do tipo:

"http://localhost:8080/RpcWebWar/index.ans"

processe a página index.jsp pelo FacesServlet.

espero ter esclarecido alguma coisa,

abraços.

Criado 13 de janeiro de 2008
Ultima resposta 13 de jan. de 2008
Respostas 1
Participantes 2