Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

JSF não é interpretado

O arquivo index.xhtml esta funcionando e o sendo intpretado. Mas meu arquivos livro.xhtml não é interpretado pelo navegador e as tags JSF aparecem no código. Não da nenhum erro ele apenas não interpreta quando roda no navegador

3 respostas

Felipe, tudo bem ?

Cara rola você mostrar para gente como está seu arquivo xhtml e seu bean para gente poder te ajudar melhor ?

Abraços

solução!

Tenho a impressão de que o problema dele é o mesmo que o meu (porém não sei o que é bean para que eu possa postar aqui).

Estou utilizando o Maven e depois de uma bagunça e muita pesquisa no Google com diversos problemas relacionados com a versão do Dynamic Web Module e o Eclipse não deixar alterar no Project Facets, somado a por padrão ele ter vindo com java 1.6 e não 1.8 e também não deixar trocar por algum motivo e ter que alterar o meu web.xml por causa da versão do DWM, finalmente o Eclipse não me reclama mais de erro nenhum.

PORÉM ele não reconhece o arquivo livro.xhtml. Ele definitivamente lê e abre o arquivo index.jsp criado por padrão pelo Maven, mas o xhtml ele não abre.

Ao mandar rodar o TomCat, a seguinte exception é lançada (mas ele roda de qualquer forma, tanto é que o index.jsp aparece no navegador):

GRAVE: Servlet [Faces Servlet] in web application [/library] threw load() exception
java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:520)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:501)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1050)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:989)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4913)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5223)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

Para conseguir fazer funcionar o projeto, tive que alterar meu web.xml que segue (a versão 2.3 que vem por padrão dava erro):

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                              http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">
    <display-name>library</display-name>
    <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>*.xhtml</url-pattern>
    </servlet-mapping>
</web-app>

Porém agora no Project Facets, ele está colocando como versão 3.1 por algum motivo. Não coloquei 3.1 em lugar nenhum! Mesmo se eu alterar manualmente o arquivo onde fica essa configuração, ele muda de volta pra 3.1!

Segue abaixo o meu pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>br.com.dominio</groupId>
    <artifactId>library</artifactId>
    <packaging>war</packaging>
    <version>1.0.0-SNAPSHOT</version>
    <name>library Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>javax.faces</artifactId>
            <version>2.3.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.0-b07</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <build>
        <finalName>library</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

E por último, o meu livro.xhtml:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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:body>
        <h:form>
            <h:inputText/>
            <h:commandButton value = "Save"/>
        </h:form>
    </h:body>

</html>

Felipe, Você chegou a definir o xhtml no mapeamento na hora de criar o projeto?