Minha página de Cadastrar Usuario XHTML
não consegue localizar o ManegedBean
usuário.
Porém a minha classe usuarioBean possui a tag @ManagedBean (name = "usuarioBean").
Na minha página de cadastro XHTML
, cada campo de cadastro chama o atributo da seguinte forma:
<h:graphicImage value="/image/logocarboscore250.png" />
<br /> <br />
<h:form>
<p:panel header="Novo Cadastro">
<p:messages autoUpdate="true" />
<h:panelGrid id="grid" columns="2" cellpadding="8">
<p:outputLabel for="nome" value="Nome:" />
<p:inputText id="nome" value="#{usuarioBean.usuario.nome}"
required="true" label="nome">
<f:validateLength minimum="3" />
</p:inputText>
<p:outputLabel for="sobrenome" value="Sobrenome:" />
<p:inputText id="sobrenome"
value="#{usuarioBean.usuario.sobrenome}" required="true"
label="sobrenome">
<f:validateLength minimum="3" />
</p:inputText>
<p:outputLabel value="Sexo:" />
<p:selectOneMenu value="#{usuarioBean.usuario.sexo}">
<f:selectItem itemLabel="Selecione..." itemValue="" />
<f:selectItem itemLabel="Feminino" itemValue='Feminino'/>
<f:selectItem itemLabel="Masculino" itemValue='Masculino'/>
</p:selectOneMenu>
<p:outputLabel for="cpf" value="CPF:" />
<p:inputMask id="cpf" value="#{usuarioBean.usuario.cpf}"
mask="999.999.999-99" required="true" />
<p:outputLabel for="email" value="E-mail:" />
<p:inputText id="email" value="#{usuarioBean.usuario.login}"
required="true" label="email">
<f:validateLength minimum="10" />
</p:inputText>
<p:outputLabel for="senha" value="Senha:" />
<p:inputText id="senha" value="#{usuarioBean.usuario.senha}"
required="true" label="senha">
<f:validateLength minimum="6" />
</p:inputText>
<p:outputLabel value="Estado:" />
<p:selectOneMenu value="#{usuarioBean.usuario.estado}">
<f:selectItem itemLabel="Selecione..." itemValue="" />
<f:selectItem itemLabel="Distrito Federal" itemValue='Distrito Federal'/>
</p:selectOneMenu>
</h:panelGrid>
<br />
<div align="right">
<p:commandButton value="Cadastrar" action="#{usuarioBean.salvarusuario()}"
icon="ui-icon-check" />
</div>
</p:panel>
Erros:
ADVERTÊNCIA: /CadastrarUsuario.xhtml @45,36 value="#{usuarioBean.usuario.nome}": Target Unreachable, identifier ‘usuarioBean’ resolved to null
javax.el.PropertyNotFoundException: /CadastrarUsuario.xhtml @45,36 value="#{usuarioBean.usuario.nome}": Target Unreachable, identifier ‘usuarioBean’ resolved to null
Caused by: javax.el.PropertyNotFoundException: Target Unreachable, identifier ‘usuarioBean’ resolved to null
E assim por diante para cada campo, como sobrenome, sexo, estado…
Pode ser os imports, ja aconteceu comigo ao utilizar import javax.faces.bean.ViewScoped ao invés de import javax.faces.view.ViewScoped, se não for posta o código do seu bean
1 curtida
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import br.com.carboscore.fachada.Fachada;
import br.com.carboscore.model.Usuario;
@ManagedBean (name = "usuarioBean")
@SessionScoped
public class usuarioBean {
private Usuario usuario = new Usuario();
private Fachada fachada;
private List<Usuario> listaUsuario;
private List<Usuario> listUsuario;
@PostConstruct
public void init() {
this.usuario = new Usuario();
this.fachada = Fachada.getInstanceFachada();
this.listaUsuario = new ArrayList<Usuario>();
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public String logarusuario(){
Usuario usuariook = new Usuario();
usuariook = usuarioExisteNoBanco(usuario);
//testa se o usuario existe no banco se exister, retorna logado, se o usuario for igual a nulo, retorna para pagina index;
if(usuariook == null){
usuario = new Usuario();
FacesContext menssagem = FacesContext.getCurrentInstance();
menssagem.addMessage(null, new FacesMessage("Usuario invalido"));
return "logar.xhtml";
}else {
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext ec = fc.getExternalContext();
HttpSession session = (HttpSession) ec.getSession(false);
session.setAttribute("usuario", usuariook);
return "cadastro.xhml";
}
}
public Usuario usuarioExisteNoBanco(Usuario usuario) {
listaUsuario = fachada.controler.listarUsuarios();
for (Usuario usuarioset : listaUsuario) {
String loginset = usuarioset.getLogin();
String senhaset = usuarioset.getSenha();
// coloca um usuario em cada atributo dos usuarios da lista
Usuario usuarioTeste = new Usuario();
usuarioTeste.setLogin(loginset);
usuarioTeste.setSenha(senhaset);
// testa se o login do usuario da lista é o mesmo login do usuario da pagina
//testa o login
if (usuarioTeste.getLogin().equals(usuario.getLogin())) {
System.out.println("login ok");
//testa a senha
if (usuarioTeste.getSenha().equals(usuario.getSenha())) {
System.out.println("senha ok");
Usuario usuarioOK = usuarioset;
return usuarioOK;//retorna o usuario logado
}
}
}
return null;//se ele não existir retorna null;
}
public String sairlogin(){
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext ec = fc.getExternalContext();
HttpSession session = (HttpSession) ec.getSession(false);
session.removeAttribute("usuario");
return "index.xhtml";
}
public void testausuario(){
System.out.println(usuario.getLogin());
System.out.println(usuario.getSenha());
}
//Get e set da lista de usuarios;
public List<Usuario> getListUsuario() {
listUsuario = fachada.controler.listarUsuarios();
return listUsuario;
}
public void setListUsuario(List<Usuario> listUsuario) {
this.listUsuario = listUsuario;
}
//salvar usuario
public String salvarusuario() {
fachada.controler.cadastrarUsuario(usuario);
usuario = new Usuario();
FacesContext menssagem = FacesContext.getCurrentInstance();
menssagem.addMessage(null, new FacesMessage("Usuario salvo com sucesso"));
return "CadastrarUsuario.xhtml";
}
//listar usuarios
public String listarusuario(){
return "GerenciarUsuarios.xhtml";
}
//excluir usuario
public String excluirusuario(Usuario usuario){
fachada.controler.excluirUsuario(usuario);
FacesContext menssagem = FacesContext.getCurrentInstance();
menssagem.addMessage(null, new FacesMessage("Usuario excluido com sucesso"));
return "GerenciarUsuarios.xhtml";
}
//prepara editação e redireciona pra pagina editar.xhtml
public String preparaEdicao(Usuario usuario){
this.usuario = usuario;
System.out.println(this.usuario.getIdusuario());
return "GerenciarUsuarios.xhtml";
}
//edita o lutador e salva no banco
public String editar(){
fachada.controler.editarUsuario(usuario);
System.out.println(usuario.getIdusuario());
FacesContext menssagem = FacesContext.getCurrentInstance();
menssagem.addMessage(null, new FacesMessage("Usuario editado com sucesso"));
return "GerenciarUsuarios.xhtml";
}
}
Coloca o nome da classe da primeira letra maiúscula exemplo UsuarioBean, limpa dá um clean se for maven e testa
Eu estava vendo aqui e não tem nada de errado em sua implementação só esse detalhe do padrão escrita de classe que deve ser com primeira letra maiúscula, eu acredito que VC colocou minúscula pensando que poderia ser ai erro , mas não é isso um vez que VC nomeia o managedbean o controlador FacesServlet vai buscar sempre pelo nome que VC especificou(que por sinal @ManagedBean não é tag e sim um annotation de classe) caso contrário ele busca pelo nome com exata lexicógrafia da classe , tente limpar seu projeto , dê um clean se for o maven e reimplante seu projeto pode ser que sua classe não tenha sido atualizado no servidor
Dei um clean geral no projeto e no server.
Era apenas um bug mesmo.
1 curtida