Duvida Facelets+JSF

4 respostas
gulira

Pessoal estou estudando facelets e estou com uma duvida.

Seque as estrutura do seguinte codigo (Codigo bem simples) :

web.xml

...
    <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>
    </context-param>    

    <!-- Faces Servlet -->
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>    
        
    <!-- Faces Servlet Mapping -->
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
...

faces-config.xml

...
<faces-config>  
    <application>
        <locale-config>
            <default-locale>en</default-locale>
        </locale-config>        
        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
    </application>  
</faces-config>
...

hello.xhtml

&lt?xml version="1.0" encoding="ISO-8859-1" ?&gt
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" 
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	version="2.0">

<ui:composition>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Hello World</title>
</head>
<body>
	<h:outputText value="Hello World!"/>
</body>
</html>
</ui:composition>

</jsp:root>

Se eu entrar com http://localhost:8085/aplicacao/hello.jsf ok aparecera o html normal.

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
...

Agora se eu entrar com http://localhost:8085/aplicacao/hello.xhtml ele aparece o código ao qual o facelets deveria processar

&lt?xml version="1.0" encoding="ISO-8859-1" ?&gt
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" 
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        version="2.0">

<ui:composition>
...

qual seria a maneira exata de fazer com que o jsf não deixe o usuario acessar o xhtml diretamnete.

Se não fui claro digam ai… :lol:

4 Respostas

kissdemon

No servlet-mapping, do mesmo modo que fez com a extensão jsf, faça para xhtml:

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

kissdemon:
No servlet-mapping, do mesmo modo que fez com a extensão jsf, faça para xhtml:

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

Valeu Kissdemon, resolveu minha duvida.

gulira

e se eu utilizar-se de jsp em fez de xhtml (facelets) como eu poderia proteger o acesso direto ao jsp quando não é passado pelo url-pattern.

pois se eu fazer

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

quando inicializo a aplicação parece que o servidor tenta buscar a pagina e não consegue.
Se eu colocar a pagina jsp dentro do WEB-INF o jsf não consegue achar a pagina.

E nesse caso o q eu posso fazer???

gulira

Achei é só usar o security-constraint

exemplo:

&lt;security-constraint&gt;  
        &lt;web-resource-collection&gt;  
            &lt;web-resource-name&gt;Acesso Restrito&lt;/web-resource-name&gt;  
            &lt;url-pattern&gt;/pagina.jsp&lt;/url-pattern&gt;  
        &lt;/web-resource-collection&gt;  
     &lt;auth-constraint&gt;
           &lt;description&gt;&lt;/description&gt;
     &lt;/auth-constraint&gt;          
    &lt;/security-constraint&gt;

Preciso ler meu HeadFirst Servlets & JSP urgente. heheheh

Criado 10 de abril de 2007
Ultima resposta 14 de abr. de 2007
Respostas 4
Participantes 2