Pagina xhtml nao renderiza jsf

Olá pessoal, tudo bem?
Estou começando na area de jsf, e comecei a fazer um projeto bem basico, so para entender o funcionamento.
Porém, eu criei a pagina XHTML e, ao chamar, ela nao vira um jsf e o navegador oferece a opçao de download do XHTML.

Meu web.xml está assim:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>ProjAjaxComJSF2</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.xhtml</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
  </servlet-mapping>
  <context-param>
    <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
  </context-param>
  <context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>resources.application</param-value>
  </context-param>
  <listener>
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
  </listener>
</web-app>

E meu index.xhtml ta assim:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

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

xmlns:h="http://java.sun.com/jsf/html">

<h:head><title>JSF 2.0</title></h:head>

<h:body>

<h:form id="form1&#8243;>

<h:outputText value="Primeiro exemplo com JSF 2.0&#8243; />

</h:form>

</h:body>

</html>

O problema parece bem idiota, mas nao consigo ver solucao.
estou usando o eclipse helios, tomcat 6.0.
Obrigada!

Estou na mesma situação que você, acabei de perceber isso aqui…

Agora e aguardar a ajuda de alguém.

Como vcs estao acessando o XHTML na URL? Vcs chegaram a ver o conteúdo dessa arquivo q estao fazendo o download? Ele está com o HTML que deveria ser renderizado direitinho dentro dele?

Qual a versão do jsf vcs estão usando ?
Se for jsf 2.0 ele não vai pegar no tomcat 6

Cara no meu caso o codigo ta assim:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <title>TODO supply a title</title>
    </head>
    <body>
        <f:view>
    <h:form>
        <h:panelGrid columns="2">
            <h:outputText value="Total: " />
            <h:outputText value="#{impostometro.total}" />

            <h:outputText value="Entre com o valor do imposto: " />
            <h:inputText value="#{impostometro.valor}" />

            <h:commandButton value="Adicionar" action="#{impostometro.adicionaImposto}" />

        </h:panelGrid>
    </h:form>
        </f:view>
    </body>
</html>

Dae to acessando normal assim pelo navegador: http://localhost:8084/ManagedBean/novoxml.xhtml

So que agora a pagina ta aparecendo toda branca, e quando vejo o codigo fonte aparece o codigo igualzinho que postei. O estranho é que a página nao esta dentro do pacote ManagedBean como e listado na URL que o netbeans me fornece, dae coloquei o mesmo caminho de uma pagina jsp http://localhost:8084/ManagedBean/faces/novoxml.xhtml mesmo assim fica branco nao aparece nada.

So mostra o resultado quando é jsp, meu FSF é o 1.2…

isso, jsf 2.0.
Vo tentar o tomcat 7 entao, pra v q q da!
Brigada!

Ninguem conseguiu resolver nao?

Tente trocar o:

<url-pattern>/faces/*</url-pattern>

por:

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

E no navegador chame por: http://localhost:8080/SeuProjeto/suapagina.jsf

[quote=otaviojava]Qual a versão do jsf vcs estão usando ?
Se for jsf 2.0 ele não vai pegar no tomcat 6[/quote]

Dá pra usar jsf 2.0 no tomcat 6 sim. É só trocar a lib de EL do próprio tomcat que funciona.

Bom dia pessoal, estou tendo este mesmo problema e ainda não consegui resolver com essas soluções… A minha página fica em branco só, tentei com richfaces e primefaces, ambos deram este problema.

Alguem conseguiu corrigir o problema?

RESOLVIDO

Não sei se todo mundo jah resolveu, mas se alguem ainda tiver o problema tente apagar o faces-config.xml do projeto, ele não é necessário no JSF2. Eu jah tinha visto que não precisava dele, mas n achava que se deixasse ele no projeto seria um problema.

Estava com o mesmo problema aqui mas resolvi de maneira diferente, a url estava incorreta, pois o servlet JSF utiliza o mapeamento url pattern “/faces/*” ficando assim: “nomeAPP/faces/url.xhtml”.

COMO RESOLVER:

Essa é uma dúvida que todos iniciantes tem dificuldade, a solução não é de configuração, nem necessita colocar mais de uma <url-pattern>

A questão é apenas entender o que você acabou de dizer ao mapear FACES SERVLET no seu web.xml

POR EXEMPLO:

Quando você diz no web-xml que:

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

Para que o Servlet do JSF entenda que sua página será convertida em HTML você deverá chamar a URL da seguinte maneira:
http://localhost/NOME_APLICACAO/faces/index.xhtml

Mas se você definir outra extensão, por exemplo:

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

Assim sua chamada no navegador irá mudar para:
http://localhost/NOME_APLICACAO/index.qualquercoisa

OBS.: (Repare que eu tirei o /faces/ da URL)

O que você está fazendo é dizer para o seu Controller que todas páginas declaradas <url-pattern> do web.xml que elas representarão o seu servlet, <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> ele entre outras coisas é quem tem a responsabilidade de tratar as tags JSF e devolver HTML para o navegador.

Espero ter ajudado.

1 curtida