Senhores (as), tudo bem ?
Bem estou com um problema, sempre que estou testando a pagina xhtml relacionada ao login, esta indicando erro, informando que a propriedade efetuaLogin, mas ao olhar na classe ela esta la '-'.
Segue informacao do erro e das minhas classes.
Erro:
exception
javax.servlet.ServletException: /login.xhtml: Property 'efetuaLogin' not found on type br.com.caelum.livraria.bean.LoginBean
javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
javax.el.ELException: /login.xhtml: Property 'efetuaLogin' not found on type br.com.caelum.livraria.bean.LoginBean
com.sun.faces.facelets.compiler.AttributeInstruction.write(AttributeInstruction.java:94)
com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82)
Login.xhtml:
<?xml version="1.0" encoding="UTF-8" ?>
<!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://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<ui:composition template="_template.xhtml">
<ui:define name="titulo">
Login
</ui:define>
<ui:define name="conteudo">
<h:form id="login">
<fieldset>
<legend>Login</legend>
<h:panelGrid columns="3">
<h:outputLabel value="Email: " for="email" />
<h:inputText id="email" value="#{loginBean.usuario.email}"
required="true">
</h:inputText>
<h:message for="email" id="messageEmail" />
<h:outputLabel value="Senha" for="senha" />
<h:inputSecret id="senha" value="#{loginBean.usuario.senha}">
<f:passThroughAttribute name="type" value="password"></f:passThroughAttribute>
</h:inputSecret>
<h:message for="senha" id="messageSenha" />
<h:commandButton value="Efetuar Login"
action="#{loginBean.efetuaLogin}" />
</h:panelGrid>
</fieldset>
</h:form>
</ui:define>
</ui:composition>
</html>
loginBean
package br.com.caelum.livraria.bean;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import br.com.caelum.livraria.modelo.Usuario;
@ManagedBean
@ViewScoped
public class LoginBean {
private Usuario usuario = new Usuario();
public Usuario getUsuario() {
return usuario;
}
/**
* Funcao para verificar se o usuario existe realmente ou nao, caso nao seja encontrado
* o sistema enviara uma mensagem alertando ao usuario.
* @return Usuario
*/
public String efetuaLogin() {
System.out.println("Fazendo login do usuário " + this.usuario.getEmail());
return "livro?faces-redirect=true";
}
}
Classe Usuario:
package br.com.caelum.livraria.modelo;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Integer id;
private String senha;
private String email;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}