JSF Property 'usuario' not found on type bean

Pessoal, a minha pagina esta dando o seguinte erro:

javax.servlet.ServletException: /usuario.xhtml @16,77 value="#{usuarioBean.usuario.idUsuario}": Property ‘usuario’ not found on type bean.UsuarioBean
javax.faces.webapp.FacesServlet.service(FacesServlet.java:422)

root cause

javax.el.PropertyNotFoundException: /usuario.xhtml @16,77 value="#{usuarioBean.usuario.idUsuario}": Property ‘usuario’ not found on type bean.UsuarioBean
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:169)
com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205)
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:355)
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164)
javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763)
javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401)
com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:410)

segue meu código:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<html xmlns="http://www.w3.org/1999/xhtml"            
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
      <h:head>
         <title>
           Cadastro de Usuário
         </title>
      </h:head>
      
        <h:body>
        
           <h1> Cadastramento de Usuário</h1>
           <h:form id="cadastro">
                  <h:messages />
                  <h:inputHidden value="#{usuarioBean.usuario.idUsuario}" />
                  <h:inputHidden value="#{usuarioBean.usuario.estatus}" />
                  <h:panelGrid columns="2">                
                  		<h:outputLabel value="Nome" for= "nome"/>
                  		<h:inputText 
                  		       id="nome" label="Nome" value="#{usuarioBean.Usuario.nome}" 
                        	  size="45" maxlength="45" required="true"
                        	   
                        	  requiredMessage="Por favor, digite o nome"
                        	  validatorMessage="O nome deve conter entre 7 a 45">
                        	  
                        	  <f:validateLength minimum="7" maximum="45"></f:validateLength>
                      
                        </h:inputText>
                  
                  
                  		<h:outputLabel value="E-mail" for= "email"/>
                  		<h:panelGroup>
		                  		<h:inputText 
		                  		       id="email" label="E-mail" value="#{usuarioBean.Usuario.email}" 
		                        	  size="70" maxlength="70" required="true" requiredMessage="Por favor, digite o e-mail" 
		                        	  validatorMessage="E-mail inválido">
		                        	  <f:validateRegex pattern="[a-zA-Z0-9\-\_\.]+@[a-zA-Z0-9\-\_\.]+"/>		                      
		                        </h:inputText>
                        </h:panelGroup>
                        
                    <h:outputLabel value="idioma" for="idioma" />
                    <h:selectOneMenu id="idioma" value="#{usuarioBean.Usuario.idioma}">
                         <f:selectItem  itemValue="pt_BR" itemLabel="Português"/>
                         <f:selectItem  itemValue="en_US" itemLabel="Inglês"/>
                         <f:selectItem  itemValue="es_ES" itemLabel="Espanhol"/>
                    </h:selectOneMenu>    
                        
                        
               		<h:outputLabel value="Senha:" for= "senha"/>
                  		<h:inputSecret
                  		       id="senha" label="Senha" value="#{usuarioBean.Usuario.senha}" 
                        	  size="15" maxlength="15" required="true" redisplay="true" />
                        	  
               		<h:outputLabel value="Confirmar Senha:" for= "confSenha"/>
                  		<h:inputSecret
                  		       id="confSenha" label="Confirmar Senha" value="#{usuarioBean.confirmarSenha}" 
                        	  size="15" maxlength="15" required="true" redisplay="true" />
                        	                          	  
                  </h:panelGrid>
                  <h:commandButton action="${usuarioBean.salvar}" value="Salvar" />
           
           
           </h:form>
      
        </h:body>

</html>





package bean;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

import dao.UsuarioRN;

import banco.BancoDeClientes;

import modelo.Usuario;

@ManagedBean(name = "usuarioBean")
@RequestScoped
public class UsuarioBean {
	
	private Usuario usuario = new Usuario();
	BancoDeClientes bdc = new BancoDeClientes();
	private String confirmarsenha;
	private List<Usuario> lista;
	
	
	public String salvar(){
		FacesContext context = FacesContext.getCurrentInstance();
		String senha = usuario.getSenha();
		if (! senha.equals(confirmarsenha)){
			FacesMessage facesMessage = new FacesMessage("Confirmar");
			context.addMessage(null, facesMessage);
			return null;
		}
		bdc.salvaruser(usuario);
		return "UsuarioCadastrado";
	}
	
	public List<Usuario> getLista(){
		if (lista == null) {
			 UsuarioRN usuarioRN = new UsuarioRN();
			 lista = usuarioRN.listar();	
			   
		}
		return lista;
	}
	

}



package modelo;


import java.io.*;
import javax.persistence.*;
import java.util.*;


@Entity
@Table(name="usuario")
public class Usuario {
	@Id
	@GeneratedValue
	private Integer idUsuario;
	@Column(name="nomeUsuario")
	private String nome;
////Quer dizer sera unico 
	@org.hibernate.annotations.NaturalId
	private String email;
	
	private String senha;
	private String idioma;
	
	private Boolean estatus;

	public Integer getIdUsuario() {
		return idUsuario;
	}

	public void setIdUsuario(Integer idUsuario) {
		this.idUsuario = idUsuario;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getIdioma() {
		return idioma;
	}

	public void setIdioma(String idioma) {
		this.idioma = idioma;
	}

	public Boolean getEstatus() {
		return estatus;
	}

	public void setEstatus(Boolean estatus) {
		this.estatus = estatus;
	}

}

Você leu a mensagem de erro? Vou destacar a parte importante.

Me diga, oq você entende?

Precisa de get e set do objeto usuário no managedBean

1 curtida

Verdade, acredito que isso deve resolver.

Deve prestar muita atenção nas mensagem, pois em 90% dos casos (se não mais) lhe dão a solução mastigada (ou pelo menos lhe apontam o problema).

que não achou a propriedade “Usuario” no Bean certo ?

[quote=evandro_araujo]que não achou a propriedade “Usuario” no Bean certo ?[/quote]Isso.
E como é possível resolver isso?


    public Usuario getUsuario(){
        return usuario;
     }

     public void setUsuari (Usuario usuario){
        this.usuario = usuario;
     }     
	

[quote=evandro_araujo][code]

public Usuario getUsuario(){
    return usuario;
 }

 public void setUsuari (Usuario usuario){
    this.usuario = usuario;
 }     

[/code][/quote]Só está faltando um “o” no seu set. Mas que bom que você entendeu. [=

agora esta dando um erro na seguinte linha

javax.servlet.ServletException: /usuario.xhtml @58,88 value="#{usuarioBean.confirmarsenha}": Property ‘confirmarsenha’ not found on type bean.UsuarioBean
javax.faces.webapp.FacesServlet.service(FacesServlet.java:422)

root cause


               		<h:outputLabel value="Confirmar Senha:" for= "confSenha"/>
                  		<h:inputSecret
                  		       id="confSenha" label="Confirmar Senha" value="#{usuarioBean.confirmarsenha}" 
                        	  size="15" maxlength="15" required="true" redisplay="true" />

package bean;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

import dao.UsuarioRN;

import banco.BancoDeClientes;

import modelo.Cliente;
import modelo.Usuario;

@ManagedBean(name = "usuarioBean")
@RequestScoped
public class UsuarioBean {
	
	private Usuario usuario = new Usuario();
	BancoDeClientes bdc = new BancoDeClientes();
	private String confirmarsenha;
	private List<Usuario> lista;
	
	
    public Usuario getUsuario(){
        return usuario;
     }

     public void setUsuario (Usuario usuario){
        this.usuario = usuario;
     }     
	
	
	
	public String salvar(){
		FacesContext context = FacesContext.getCurrentInstance();
		String senha = usuario.getSenha();
		if (! senha.equals(confirmarsenha)){
			FacesMessage facesMessage = new FacesMessage("Confirmar");
			context.addMessage(null, facesMessage);
			return null;
		}
		bdc.salvaruser(usuario);
		return "UsuarioCadastrado";
	}
	
	public List<Usuario> getLista(){
		if (lista == null) {
			 UsuarioRN usuarioRN = new UsuarioRN();
			 lista = usuarioRN.listar();	
			   
		}
		return lista;
	}
	

}


o que não estou entendendo é que tenho a linha no meu Bean.

	private String confirmarsenha;

Beleza. Assim como você tem o Usuario declarado em uma linha, correto?

Como que você fez para que o usuário fosse acessado da página?

então utilizei o get e set para acessar …

[quote=evandro_araujo]então utilizei o get e set para acessar …[/quote]hum… Conseguiu entender agora oq falta?

teria que ser algo assim :
usuario.getconfirmarsenha();

mas na minha classe Usuario nao tenho o confirmarsenha, terei que criar ?

confirmarsenha
segue minha classe usuario :

package modelo;


import java.io.*;
import javax.persistence.*;
import java.util.*;


@Entity
@Table(name="usuario")
public class Usuario {
	@Id
	@GeneratedValue
	private Integer idUsuario;
	@Column(name="nomeUsuario")
	private String nome;
////Quer dizer sera unico 
	@org.hibernate.annotations.NaturalId
	private String email;
	
	private String senha;
	private String idioma;
	
	private Boolean estatus;

	public Integer getIdUsuario() {
		return idUsuario;
	}

	public void setIdUsuario(Integer idUsuario) {
		this.idUsuario = idUsuario;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getIdioma() {
		return idioma;
	}

	public void setIdioma(String idioma) {
		this.idioma = idioma;
	}

	public Boolean getEstatus() {
		return estatus;
	}

	public void setEstatus(Boolean estatus) {
		this.estatus = estatus;
	}

}

[quote=evandro_araujo]teria que ser algo assim :
usuario.getconfirmarsenha();

mas na minha classe Usuario nao tenho o confirmarsenha, terei que criar ?

confirmarsenha
segue minha classe usuario :

[code]
package modelo;

import java.io.;
import javax.persistence.
;
import java.util.*;

@Entity
@Table(name=“usuario”)
public class Usuario {
@Id
@GeneratedValue
private Integer idUsuario;
@Column(name=“nomeUsuario”)
private String nome;
////Quer dizer sera unico
@org.hibernate.annotations.NaturalId
private String email;

private String senha;
private String idioma;

private Boolean estatus;

public Integer getIdUsuario() {
	return idUsuario;
}

public void setIdUsuario(Integer idUsuario) {
	this.idUsuario = idUsuario;
}

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

public String getEmail() {
	return email;
}

public void setEmail(String email) {
	this.email = email;
}

public String getSenha() {
	return senha;
}

public void setSenha(String senha) {
	this.senha = senha;
}

public String getIdioma() {
	return idioma;
}

public void setIdioma(String idioma) {
	this.idioma = idioma;
}

public Boolean getEstatus() {
	return estatus;
}

public void setEstatus(Boolean estatus) {
	this.estatus = estatus;
}

}

[/code][/quote]Você tem que criar na classe que você for acessar esse campo. Se você for acessar esse campo de dentro do usuário é lá que ele deve ficar com seus get/set.
Não se esqueça que o quem acessa é o código que esta na página, então o atributo deve estar na classe que ele for acessado da página.