Problema com Facelets

10 respostas
gisa_screen

Ola gente!

Eu quero desenvolver para Web usando Facelets, JSF e Richfaces… e tem um problema, para facelets as páginas são em xhtml…estou usando a versao do eclipse 3.6, o JSF 1.2 e o container tomcat v6…ja add as configurações do facelets…e os jars…e criei o arquivo em extensão em xhtml…e uma index para esta página principal…mas parece q a página nao está sendo encontrada…(com extensão JSP funciona, agora Xhtml nao)

Alguem tem algum tutorial, para desenvolvimento JSF e Facelets…?

10 Respostas

Bravox

Vc tem que usar a extensão que está mapeado no web.xml

Por exemplo:

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

Na url:

..app/pagina.jsf
gisa_screen

isso que eu fiz na página…na index fiz assim <jsp:forwad page=“teste.jsf”> </jsp> …mas a minha página em xhtml não é exibida…

Bravox

Faz assim:

<% response.sendRedirect("/app/pagina.jsf"); %>
gisa_screen

vou tentar quando chegar em casa(to no trab, só queria tirar minha dúvida logo)…vou tentar usar o sendRedirect… mas qual a diferença?

Bravox

Redirect ou Forwad

gisa_screen

Ah …O facelets é só para templates??? posso usar dentro das tags do JSF <f:view>

dev.rafael

Veja, primeiro vc deve ter a seguinte configuração no seu web.xml

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

Isso vai dizer ao JSF q as views serão escritas em formato xhtml. Depois dê uma olhada no seu mapeamento da FacesServlet. Isso serve p/ vc dizer como as páginas devem ser acessadas.

<servlet-mapping>
  <servlet-name>FacesServlet</servlet-name>
  <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

Essa tag url-pattern indica como vc vai acessar as suas views. Eu costumo usar essa configuração nos meus aplicativos pq ela mapeia urls terminadas em .xhtml.

Como está essa configuração no seu projeto?

PS.: não, vc não pode colocar tags <f:view> se vc estiver usando Facelets. Isso é só p/ JSP.

gisa_screen

Sim… eu tenho ja esse mapeamento…porque eu vi em um tutorial de facelets que é necessário…

&lt;servlet-mapping&gt; &lt;servlet-name&gt;FacesServlet&lt;/servlet-name&gt; &lt;url-pattern&gt;*.xhtml&lt;/url-pattern&gt; &lt;/servlet-mapping&gt;

preciso desse tbm do JSF neh…?

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

depois eu vou postar meu web.xml aqui…

dev.rafael

Sim! O servlet-mapping determina quais urls passam pelo JSF e quais não passam. Por exemplo se o seu url-pattern estiver assim:

<url-pattern>*.jsf</url-pattern>

Vc deve acessar as suas views p/ urls terminadas com a extenção .jsf. Isso não muda o fato de q as suas views ainda devem ser arquivos .xhtml apenas muda a maneira como vc as acessa. Ou seja, se vc tiver uma view test.xhtml vc vai acessa-la pela através da url http://hostname[:port]/appname/test.jsf.

É por isso q eu aconselho q vc configure da seguinte maneira:

<url-pattern>*.xhtml</url-pattern>

Pq assim a sua view test.xhtml pode ser acessada assim: http://hostname[:port]/appname/test.xhtml.

Entendeu?

gisa_screen

acho que Entendi…

ao invés de usar

eu uso assim para acessar pela url ao /teste.xhtml…

Criado 20 de setembro de 2010
Ultima resposta 20 de set. de 2010
Respostas 10
Participantes 3