JSF : Erro ao realizar select no banco MySQL

1 resposta
mausexdd

Bom dia , estou tentando realizar um select no banco para verificar usuário e senha e realizar um login no sistema ,
só que retorna o erro :

exception

javax.servlet.ServletException: #{loginVisao.login}: java.lang.NullPointerException
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
root cause

javax.faces.FacesException: #{loginVisao.login}: java.lang.NullPointerException
	com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
	javax.faces.component.UICommand.broadcast(UICommand.java:387)
	org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
	org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
	org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
	org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
	com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)

Segue meu código.

Meu método controlador que valida o retorno do banco e manda para a pagina JSF

public class LoginVisao {

	private Usuario usuario;
	private BOCliente boCliente;

	public String login() {

		String stringRetorno = "";

		if (boCliente.realizaLogin(getUsuario().getLogin(), getUsuario()
				.getSenha()) == true) {
			stringRetorno = "loginOK";
		} else {
			stringRetorno = "loginErro";
			FacesContext context = FacesContext.getCurrentInstance();
			context.addMessage("Formulario", new FacesMessage(
					"Login/Senha - inválidos"));
		}
		return stringRetorno;
	}

a minha classe LoginVisao chama meu BOCliente

public boolean realizaLogin(String usuario, String senha) {
		return getDaoUsuario().realizaLogin(usuario, senha);

	}

Que chama minha classe DAOUsuario que tem o método boolean que retorna se tem os dados no BD

public boolean realizaLogin(String usuario, String senha) {
		preparaConexao();
		ps = null;
		boolean loginOK = false;
		try {
			ps = getConexao().prepareStatement(
					"select LOGIN,SENHA from cliente_login where LOGIN  ='"
							+ usuario + "'and SENHA = '" + senha + "'");
			setResultSet(ps.executeQuery());
			if (getResultSet().next() == true) {
				loginOK = true;
				return true;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		fechaConexao(ps);
		return false;

Alguém poderia me ajudar a identificar o erro , estou tendo problemas para debugar com breakPoints tipo acessando os metodos passo a passo
ja que o sistema é web , estou aprendendo JSF e JSP queria algumas dicas do que poderia ser este problema...

1 Resposta

D

o seu Usuário esta declarado no facesConfig correto ? lembre-se que para pegar os dados do seu ManagedBean você precisa carrega-lo da sua session, faça o seguinte teste,
nessa sua classe ai, LoginVisao, antes de chamar seu metodo de validação de login utilize isso para carregar seu bean da tela:

FacesContext context = FacesContext.getCurrentInstance();
usuario = (Usuario) context.getELContext().getELResolver().getValue(context.getELContext(), null,"Usuario"); // este ultimo é o nome declarado no managedBean - name

faça este teste e veja se funciona

Criado 25 de junho de 2011
Ultima resposta 25 de jun. de 2011
Respostas 1
Participantes 2