Xhtml nao reconhece mais meu manegebean

Pessoal, estou com um problema no meu codigo, eu estava fazendo uma funcao na qual eu precisava de um forech… porem como eu nao tinha usado foreach ainda ele pediu para alterar o meu projeto para executar como java 1.8, coisa assim(sou iniciante), dai depois disso o meu jsf parece que parou de reconhecer meu manege bean e nao consigo mais navegar no meu sistema. Alguem pode me ajudar?
segue o log e o codigo.

/login.xhtml @16,63 value="#{UsuarioMB.usuario.nome}": Target Unreachable, identifier [UsuarioMB] resolved to null

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

javax.servlet.ServletException: /login.xhtml @16,63 value="#{UsuarioMB.usuario.nome}": Target Unreachable, identifier [UsuarioMB] resolved to null
javax.faces.webapp.FacesServlet.service(Unknown Source)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause

javax.el.PropertyNotFoundException: /login.xhtml @16,63 value="#{UsuarioMB.usuario.nome}": Target Unreachable, identifier [UsuarioMB] resolved to null
com.sun.faces.facelets.el.TagValueExpression.getType(Unknown Source)
org.primefaces.util.ComponentUtils.getConverter(ComponentUtils.java:144)
org.primefaces.renderkit.InputRenderer.getConvertedValue(InputRenderer.java:171)
javax.faces.component.UIInput.getConvertedValue(Unknown Source)
javax.faces.component.UIInput.validate(Unknown Source)
javax.faces.component.UIInput.executeValidate(Unknown Source)
javax.faces.component.UIInput.processValidators(Unknown Source)
javax.faces.component.UIComponentBase.processValidators(Unknown Source)
javax.faces.component.UIForm.processValidators(Unknown Source)
javax.faces.component.UIComponentBase.processValidators(Unknown Source)
javax.faces.component.UIComponentBase.processValidators(Unknown Source)
javax.faces.component.UIViewRoot.processValidators(Unknown Source)
com.sun.faces.lifecycle.ProcessValidationsPhase.execute(Unknown Source)
com.sun.faces.lifecycle.Phase.doPhase(Unknown Source)
com.sun.faces.lifecycle.LifecycleImpl.execute(Unknown Source)
javax.faces.webapp.FacesServlet.service(Unknown Source)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause

javax.el.PropertyNotFoundException: Target Unreachable, identifier [UsuarioMB] resolved to null
org.apache.el.parser.AstValue.getTarget(AstValue.java:74)
org.apache.el.parser.AstValue.getType(AstValue.java:58)
org.apache.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:174)
com.sun.faces.facelets.el.TagValueExpression.getType(Unknown Source)
org.primefaces.util.ComponentUtils.getConverter(ComponentUtils.java:144)
org.primefaces.renderkit.InputRenderer.getConvertedValue(InputRenderer.java:171)
javax.faces.component.UIInput.getConvertedValue(Unknown Source)
javax.faces.component.UIInput.validate(Unknown Source)
javax.faces.component.UIInput.executeValidate(Unknown Source)
javax.faces.component.UIInput.processValidators(Unknown Source)
javax.faces.component.UIComponentBase.processValidators(Unknown Source)
javax.faces.component.UIForm.processValidators(Unknown Source)
javax.faces.component.UIComponentBase.processValidators(Unknown Source)
javax.faces.component.UIComponentBase.processValidators(Unknown Source)
javax.faces.component.UIViewRoot.processValidators(Unknown Source)
com.sun.faces.lifecycle.ProcessValidationsPhase.execute(Unknown Source)
com.sun.faces.lifecycle.Phase.doPhase(Unknown Source)
com.sun.faces.lifecycle.LifecycleImpl.execute(Unknown Source)
javax.faces.webapp.FacesServlet.service(Unknown Source)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

MINHA CLASSE manageBean

package controller;

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

import dao.UsuarioDAO;
import model.Usuario;

@ManagedBean
public class UsuarioMB {

private UsuarioDAO usuarioDAO = new UsuarioDAO();
private Usuario usuario = new Usuario();

public String envia() {

	usuario = usuarioDAO.getUsuario(usuario.getNome(), 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 "/index.xml";
	}

}

public void cadastrarUsuario() {
	usuarioDAO.salvar(usuario);
	
}

public Usuario getUsuario() {
	return usuario;
}

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

}

Na minha outra tela da isso.

com.sun.faces.mgbean.ManagedBeanCreationException: Não é possível criar instância para·a classe:

1 - “Exceção de Propriedade Não Encontrada”;
2 - “Destino inacessível, identificador [UsuarioMB] resolvido para nulo”;

Parece que o EL está gerando o erro porque o valor de UsuarioMB é igual a null e null não pode acessar usuario.nome. Certifique-se que a referência seja válida.

Como está o seu ManageBean?

1 curtida

Obrigado pela resposta, segue meu manageBean.

package controller;

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

import dao.UsuarioDAO;
import model.Usuario;

@ManagedBean
@RequestScoped
public class UsuarioMB {

private UsuarioDAO usuarioDAO = new UsuarioDAO();
private Usuario usuario = new Usuario();

public String envia() {

	usuario = usuarioDAO.getUsuario(usuario.getNome(), 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 "/index.xml";
	}

}

public void cadastrarUsuario() {
	usuarioDAO.salvar(usuario);
	
}

public Usuario getUsuario() {
	return usuario;
}

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

}

Como você não definiu um nome para o Managed Bean através da anotação @ManagedBean ou @Named do CDI, o JSF automaticamente converte (deixa a primeira letra minúscula) o nome de referência para usuarioMB. Então na sua página xhtml, troque todos os UsuarioMB para usuarioMB.

Exemplo: #{usuarioMB.usuario.nome}

Abraços