Estou estudando Java EE e ao criar uma pagina os componentes do HTML(inputText, commandButton) não aparecem na página. Estou usando Eclipse Neon e o projeto usa Maven também. Alguém pode me dar um help? Segue o código abaixo:
<!DOCTYPE html SYSTEM "about:legacy-compat">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html">
<h:head>
<title>Olá JSF</title>
</h:head>
<h:body>
<h:form>
<h1>
Olá
<h:inputText value="#{ola.nomeCompleto}" />
</h1>
Nome: <h:inputText value="#{ola.nome}" />
<br />
Sobrenome: <h:inputText value="#{ola.sobrenome}" />
<br />
<h:commandButton value="Dizer olá" action="#{ola.dizerOla}" />
</h:form>
</h:body>
</html>
Geralmente isso acontece quando o JSF não está corretamente configurado no seu projeto, com isso, a página não será interpretada pelo “motor” do framework. Como está o seu web.xml?
<?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" 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>Financeiro</display-name>
<welcome-file-list>
<welcome-file>index.html</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>
</web-app>
Esse é o problema, o JSF não está devidamente configurado no web.xml. Qual a versão do JSF que você está tentando usar?
Se for a versão 2.x, tente alterar o seu web.xml para ficar 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" version="2.5">
<display-name>ofoka</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>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</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>
</web-app>
FONTE: Desenvolvendo uma aplicação Java Web JSF
Com essa configuração, você deverá acessar as páginas com uma dessas formas:
- suaPagina.faces
- /faces/suaPagina.html
- suaPagina.xhtml
Lucas, funcionou perfeitamente. Você salvou o meu dia. Muito obrigado!
Durante o seu estudo, é muito (MUITO) importante que você entenda o porque de usar essa configuração no arquivo web.xml. Simplesmente o funcionamento do JSF começa por lah, que envolve outras coisas, como ciclo de vida e tudo o mais.
Mas vai devagar e qualquer dúvida, soh perguntar aqui no GUJ.
Ah, o link que mandei como FONTE possui várias explicações sobre como montar um projeto com JSF, vale a pena dá uma olhada.
Vou usar a página que você indicou. Obrigado.