7
respostas

Erro ao alterar o namespace

Estou usando aqui a versão 2.2 do JSF, porém quando alterei nos arquivos xhtml para a nova versão, deu erro.

Meu faces-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
    version="2.2">

</faces-config>

Se altero o namespace nos arquivo xhtml, tenho os seguintes erros:

JBWEB000069: description JBWEB000145: The server encountered an internal error that prevented it from fulfilling this request.

javax.servlet.ServletException
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)

java.lang.NullPointerException
    br.com.projeto.bean.BrandBean.validateNew(BrandBean.java:60)
......

Estou trocando

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

por

xmlns:h="http://xmlns.jcp.org/jsf/html"

Meu faces-config está correto, mas os arquivos xhtml só funcionam com a versão antiga.

Alguém tem noção do que possa estar acontecendo?

Dependências: JavaEE7, JSF 2.2

<!-- https://mvnrepository.com/artifact/javax/javaee-api -->
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
            <scope>provided</scope>
        </dependency>

<!-- https://javaserverfaces.github.io/download.html -->
        <dependency>
            <groupId>javax.faces</groupId>
            <artifactId>javax.faces-api</artifactId>
            <version>2.2</version>
            <scope>provided</scope>
        </dependency>
7 respostas

Fala Giovane, tudo bem?

Da uma olhada nas properties do seu projeto em Project Facets > Java Server Faces. Marca o type com Disable Library Configuration. Veja se isso resolve o seu problema

Oi Samir, tudo certo e contigo?

Eu havia configurado o projeto desta forma com "Disable Library Configuration". Removi e refiz a configuração, mas o erro persiste :/

Da uma olhada no Project Facets dentro do settings pra ver se a versão do JSF está na versão 2.2

Tenho estes arquivos de configuração:

faces-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
    version="2.2">

    <lifecycle>
        <phase-listener>br.com.projeto.control.util.Authenticator</phase-listener>
    </lifecycle>

    <application>
        <locale-config>
            <default-locale>en</default-locale>
        </locale-config>

        <resource-bundle>
            <base-name>messages</base-name>
            <var>msg</var>
        </resource-bundle>
    </application>

</faces-config>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    version="3.1">

    <display-name>projeto</display-name>

    <welcome-file-list>
        <welcome-file>index.xhtml</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>*.xhtml</url-pattern>
    </servlet-mapping>

    <context-param>
        <param-name>primefaces.THEME</param-name>
        <param-value>redmond</param-value>
    </context-param>

</web-app>

beans.xml

<?xml version="1.0"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
    version="1.2" bean-discovery-mode="all" />

No Project Facets está configurado assim: CDI (1.2) Dynamic Web Module (3.1) Java (1.7) JavaServer Faces (2.2)

OI Giovane, esse erro ainda persiste?

Samir, ainda persiste sim. Porém estou para testar outras versões e servidores de aplicações. Às vezes pode ser isso... Valeu!

Boa Giovane, qlq coisa tenta criar um novo projeto e já aponta tudo para o JSF 2.2. Ai depois é só colocar as classes antigas.

Mas eu suspeito que possa ser a configuração no Project Facets. Não esquece de contar a solução aqui depois.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software