Eai pessoal,
Estou realizando um projeto na faculdade e estou com o seguinte problema na consulta de Login do usuário:
Esta é a view:
[code]<p:dialog styleClass=“ui-dialog” widgetVar=“telaLogin” width=“300”
height=“400” modal=“true” resizable=“false” showEffect=“fade”
hideEffect=“fade” header=“Efetuar Login”>
<h:form id="login">
<p:growl id="growl" showDetail="true" sticky="true" />
<h:outputLabel style="text-align: center">
<h3>
Realize Login ou
<p:commandLink value="Registre-se" onclick="selecRegistro.show()"></p:commandLink>
</h3>
</h:outputLabel>
<h:panelGrid columns="2" cellpadding="5">
<h:outputLabel for="usuario" value="Usuário:" />
<h:inputText styleClass="ui-input" id="usuario" required="true"
label="usuario" value="#{loginMB.dadosLogin.login}" />
<h:outputLabel for="senha" value="Senha:" />
<h:inputSecret styleClass="ui-input" id="senha" required="true"
label="senha" value="#{loginMB.dadosLogin.senha}" />
<f:facet name="footer">
<center>
<p:commandButton styleClass="ui-button" id="botaoLogin"
value="Entrar" update="growl" action="#{loginMB.login}"/>
</center>
</f:facet>
</h:panelGrid>
<h:outputLabel style="text-align: left;">
<h5>
<p:commandLink value="Esqueci minha Senha!"></p:commandLink>
</h5>
</h:outputLabel>
</h:form>
</p:dialog>[/code]
Esta é a Bean que recebe os dados (dadosLogin é um objeto do tipo Login(Entity do banco gerada pelo EJB)):
[code]public void login() {
FacesContext context = FacesContext.getCurrentInstance();
System.out.print(dadosLogin.getLogin() + dadosLogin.getSenha() + dadosLogin.getAtivo() + dadosLogin.getTipologin());
loginRetornado = loginDAO.verificarLogin(dadosLogin);
if (loginRetornado != null) {
if(loginRetornado.getTipologin() == 'u') {
// faz chamada pra dao que retorna um obj usuario
usuarioLogado = loginDAO.findUsuario(dadosLogin);
usuarioLogado.setLoginLogin(loginRetornado);
logado = true;
context.addMessage(null, new FacesMessage("Bem vindo" + usuarioLogado.getNomeusu()));
} else if (loginRetornado.getTipologin() == 'e') {
// chamada estabelecimento
estabLogado = loginDAO.findEstabelecimento(dadosLogin);
estabLogado.setLoginLogin(loginRetornado);
logado = true;
context.addMessage(null, new FacesMessage("Bem vindo" + estabLogado.getNomeestab()));
} else if (loginRetornado.getTipologin() == 'a') {
// faz chamada pra dao que retorna um obj usuario mas do tipo administrador
adminLogado = loginDAO.findAdmin(dadosLogin);
adminLogado.setLoginLogin(loginRetornado);
logado = true;
context.addMessage(null, new FacesMessage("Login Efetuado com sucesso!", "Bem vindo" + adminLogado.getNomeusu()));
}
} else {
context.addMessage(null, new FacesMessage("Falha ao realizar Login!", "Verifique seu Usuário e Senha!"));
}
}[/code]
E por fim esta é a DAO:
[code]public Login verificarLogin(Login login) {
try {
retorno = (Login) em.createQuery("SELECT l FROM Login l WHERE l.login = 'cmoradore' AND l.senha = '123456'")
.setParameter("login", login.getLogin())
.setParameter("senha", login.getSenha())
.getSingleResult();
if (retorno.getAtivo() == true) {
return retorno;
} else {
return null;
}
} catch (Exception e) {
System.out.println(retorno);
e.printStackTrace();
return null;
}
}[/code]
O que acontece é que quando eu Debbugo, coloco um breakpoint na linha da DAO, em que o retorno recebe o objeto do tipo Login que vem de uma query executada no banco, ele pula diretamente pro catch e gera a exception:
INFO: cmoradore123456nullnull
INFO: null
SEVERE: java.lang.NullPointerException
at com.conhecactba.dao.LoginDAO.verificarLogin(LoginDAO.java:31)
at com.conhecactba.mb.LoginMB.login(LoginMB.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.sun.el.parser.AstValue.invoke(AstValue.java:254)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:302)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:722)
O problema é que testando, eu inseri as informações da seguinte forma:
retorno = (Login) em.createQuery("SELECT l FROM Login l WHERE l.login = 'cmoradore' AND l.senha = '123456'").getSingleResult();
E mesmo assim retorna o mesmo erro, como se ele não estivesse executando a query e pulando direto pra exception, o que me leva a crer que muito provavelmente possa ser algum erro relacionado unicamente a essa linha. Os outros módulos estão funcionando beleza, mas esse me travou tudo, já que muita coisa depende do login. Por favor, se algum abençoado tiver uma idéia do que esteja acontecendo, de uma luz ai. Vai ser de grande valia.
Abraços
Carlos Moradore.