Os componentes HTML5 não aparecem na minha página

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.jsf
  • suaPagina.faces
  • /faces/suaPagina.html
  • suaPagina.xhtml

Lucas, funcionou perfeitamente. Você salvou o meu dia. Muito obrigado!:+1:

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.