Boa noite pessoal;
Estou realizando alguns estudos com Primefaces e resolvi montar um projeto simples. O resultado é uma tremenda dor de cabeça para executar uma página que contém código primefaces. Não sei porque motivo o código não encontra uma classe específica que coloquei em um atributo do ManagedBean que controla a página. Vou postar os itens do projeto aqui para que vocês possam encontrar alguma possível irregularidade que até agora não consegui encontrar.
Por favor pessoal, eu agradeço a ajuda desde já. Todos os itens estão listados abaixo, caso haja mais algum detalhe, é só pedir.
A página XHTML com Primefaces:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<h:form>
<p:messages id="messages" />
<p:panelGrid columns="2">
<p:outputLabel for="nomeUsuario" value="Nome Usuário:" />
<p:inputText id="nomeUsuario" value="#{LoginMB.usuario.nomeUsuario}" />
<p:outputLabel for="senha" value="Senha:" />
<p:password id="senha" value="#{LoginMB.usuario.senha}" />
<p:commandButton value="Enviar" icon="ui-icon-star" action="#{LoginMB.login()}" ajax="false">
</p:commandButton>
</p:panelGrid>
</h:form>
</h:body>
</html>
O arquivo 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>br.com.CorporateWeb</display-name>
<welcome-file-list>
<welcome-file>/index.xhtml</welcome-file>
</welcome-file-list>
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/index.xhtml</location>
</error-page>
<servlet>
<servlet-name>FacesServlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>FacesServlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
</web-app>
A classe MANAGEDBEAN
package br.com.setInndex.managedBeans;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.application.FacesMessage;
import br.com.setInndex.DAO.UsuarioDAO;
import br.com.setInndex.modelos.Usuario;
@ManagedBean(name = "LoginMB")
@ViewScoped
public class LoginManagedBean {
private UsuarioDAO usuarioDAO = new UsuarioDAO();
private Usuario usuario = new Usuario();
public String login() {
if (usuario.getNomeUsuario().length() == 0) {
FacesContext.getCurrentInstance().addMessage(
null,
new FacesMessage(FacesMessage.SEVERITY_ERROR, "O nome do usuário não pode ser nulo.",
"Erro no Login!"));
return null;
}
if (usuario.getSenha().length() == 0) {
FacesContext.getCurrentInstance().addMessage(
null,
new FacesMessage(FacesMessage.SEVERITY_ERROR, "Por favor, digite a senha.",
"Erro no Login!"));
return null;
}
usuario = usuarioDAO.logarUsuario(usuario.getNomeUsuario(), usuario.getSenha());
if (usuario == null) {
usuario = new Usuario();
FacesContext.getCurrentInstance().addMessage(
null,
new FacesMessage(FacesMessage.SEVERITY_ERROR, "Usuário não encontrado!",
"Erro no Login!"));
return null;
} else {
return "/main";
}
}
}
A estrutura do Projeto:
As dependências no POM
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.2.1.Final</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4.1209.jre7</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.4.Final</version>
</dependency>
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>6.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.2.13</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
E por fim, o Erro gerado quando tento acessar a página LOGIN.XHTML
javax.servlet.ServletException: /login.xhtml @15,91 value="#{LoginMB.usuario.nomeUsuario}": Property 'usuario' not found on type br.com.setInndex.managedBeans.LoginManagedBean
javax.faces.webapp.FacesServlet.service(FacesServlet.java:671)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
javax.el.PropertyNotFoundException: /login.xhtml @15,91 value="#{LoginMB.usuario.nomeUsuario}": Property 'usuario' not found on type br.com.setInndex.managedBeans.LoginManagedBean
com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:111)
javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
javax.faces.component.UIOutput.getValue(UIOutput.java:174)
javax.faces.component.UIInput.getValue(UIInput.java:291)
org.primefaces.util.ComponentUtils.getValueToRender(ComponentUtils.java:94)
org.primefaces.util.ComponentUtils.getValueToRender(ComponentUtils.java:58)
org.primefaces.component.inputtext.InputTextRenderer.encodeMarkup(InputTextRenderer.java:71)
org.primefaces.component.inputtext.InputTextRenderer.encodeEnd(InputTextRenderer.java:52)
javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
org.primefaces.component.panelgrid.PanelGridRenderer.encodeDynamicBody(PanelGridRenderer.java:131)
org.primefaces.component.panelgrid.PanelGridRenderer.encodeTableBody(PanelGridRenderer.java:102)
org.primefaces.component.panelgrid.PanelGridRenderer.encodeTableLayout(PanelGridRenderer.java:65)
org.primefaces.component.panelgrid.PanelGridRenderer.encodeEnd(PanelGridRenderer.java:37)
javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:890)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:458)
com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:134)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause