Hibernate + jsf...nao encontra metodo!1

2 respostas
M

bom dia a todos…

to em uma aplicação onde estou usando netbeans com o visual web + hibernate + jsf…gostaria de saber se preciso declarar no jsf que estou usando hibernate…pq na action do meu formulario gera erro que nao consegue encontrar ou instanciar o meu metodo que efetuaLogin()…

  • tenho a classe Dao onde se encontra todas os metodos de atualizar, remover…etc…DaoFactory onde se encontra rollback, commit…UsuarioDao onde se encontra o metodo existeUnico() que faz a busca no banco pra achar possivel usuario usando HQL…e meu UsuarioDaoBean onde faz o efetuaLogin() devolvendo uma String de sucesso ou nao…

  • UsuarioDaoBean
/*
 * UsuarioDaoBean.java
 *
 * Created on 5 de Julho de 2007, 10:13
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package br.com.ipt.dao;

import br.com.ipt.modelo.Usuario;

/**
 *
 * @author Administrador
 */

public class UsuarioDaoBean{
    
    private final DaoFactory daoFactory = null;
    private Usuario usuario;
    
    public String efetuaLogin(Usuario usuario) {
		
	UsuarioDao dao = this.daoFactory.getUsuarioDao();
	this.usuario = dao.existeUnico(usuario);
	if (this.usuario != null) {
			
		return "sucesso";
		
	} else {
			
		return "falha";
		
                }
	}
    public void logout() {
        
        this.usuario = null;
        
    }
    
    public Usuario getUsuario() {
		
	return usuario;

    }


}

minha pagina de Login

<?xml version="1.0" encoding="UTF-8"?>
<jsp:root version="1.2" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:ui="http://www.sun.com/web/ui">
    <jsp:directive.page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"/>
    <f:view>
        <ui:page binding="#{Login.page1}" id="page1">
            <ui:html binding="#{Login.html1}" id="html1">
                <ui:head binding="#{Login.head1}" id="head1">
                    <ui:link binding="#{Login.link1}" id="link1" url="/resources/stylesheet.css"/>
                </ui:head>
                <ui:body binding="#{Login.body1}" id="body1" style="-rave-layout: grid">
                    <ui:form binding="#{Login.form1}" id="form1">
                        <h:inputText value="#{usuario.login}" binding="#{Login.login}" id="login" style="left: 120px; top: 24px; position: absolute"/>
                        <h:commandButton action="#{usuarioDaoBean.efetuaLogin}" binding="#{Login.button1}" id="button1" style="left: 144px; top: 144px; position: absolute" value="Enviar"/>
                        <h:inputSecret value="#{usuario.senha}" binding="#{Login.senha}" id="senha" style="left: 120px; top: 72px; position: absolute"/>
                    </ui:form>
                </ui:body>
            </ui:html>
        </ui:page>
    </f:view>
</jsp:root>

meu faces-config

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE faces-config PUBLIC
  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
  "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>  
   

  <!-- Set default locale and add supported locales here...
  <application>
    <locale-config>
      <default-locale>en</default-locale>
      <supported-locale>de</supported-locale>
      <supported-locale>fr</supported-locale>
      <supported-locale>es</supported-locale>
    </locale-config>
  </application>
  -->
  <navigation-rule>
     <from-view-id>/Login.jsp</from-view-id>
     <navigation-case>
         <from-outcome>sucesso</from-outcome>
         <to-view-id>/Menu.jsp</to-view-id>
     </navigation-case>
    
     <navigation-case>
         <from-outcome>falha</from-outcome>
         <to-view-id>/Login.jsp</to-view-id>
     </navigation-case>
   </navigation-rule> 
   
   <managed-bean>
        <managed-bean-name>usuario</managed-bean-name>
        <managed-bean-class>br.com.ipt.modelo.Usuario</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    <managed-bean>
        <managed-bean-name>usuarioDaoBean</managed-bean-name>
        <managed-bean-class>br.com.ipt.dao.UsuarioDaoBean</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    

</faces-config>

erro geradoooo…

06/07/2007 08:38:20 org.apache.catalina.core.ApplicationContext log
SEVERE: #{usuarioDaoBean.efetuaLogin}: javax.faces.el.MethodNotFoundException: efetuaLogin: br.com.ipt.dao.UsuarioDaoBean.efetuaLogin()
javax.faces.FacesException: #{usuarioDaoBean.efetuaLogin}: javax.faces.el.MethodNotFoundException: efetuaLogin: br.com.ipt.dao.UsuarioDaoBean.efetuaLogin()
        at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:94)
        at com.sun.rave.web.ui.appbase.faces.ActionListenerImpl.processAction(ActionListenerImpl.java:57)
        at javax.faces.component.UICommand.broadcast(UICommand.java:332)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:287)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:401)
        at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:95)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:110)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:213)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at com.sun.rave.web.ui.util.UploadFilter.doFilter(UploadFilter.java:198)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:619)
Caused by: javax.faces.el.MethodNotFoundException: efetuaLogin: br.com.ipt.dao.UsuarioDaoBean.efetuaLogin()
        at com.sun.faces.el.MethodBindingImpl.method(MethodBindingImpl.java:226)
        at com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:144)
        at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:92)
        ... 28 more
06/07/2007 08:38:20 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
com.sun.rave.web.ui.appbase.ApplicationException: #{usuarioDaoBean.efetuaLogin}: javax.faces.el.MethodNotFoundException: efetuaLogin: br.com.ipt.dao.UsuarioDaoBean.efetuaLogin()
        at com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl.cleanup(ViewHandlerImpl.java:559)
        at com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl.renderView(ViewHandlerImpl.java:276)
        at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:107)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245)
        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:137)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:214)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at com.sun.rave.web.ui.util.UploadFilter.doFilter(UploadFilter.java:198)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:619)
Caused by: javax.faces.FacesException: #{usuarioDaoBean.efetuaLogin}: javax.faces.el.MethodNotFoundException: efetuaLogin: br.com.ipt.dao.UsuarioDaoBean.efetuaLogin()
        at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:94)
        at com.sun.rave.web.ui.appbase.faces.ActionListenerImpl.processAction(ActionListenerImpl.java:57)
        at javax.faces.component.UICommand.broadcast(UICommand.java:332)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:287)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:401)
        at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:95)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:110)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:213)
        ... 20 more
Caused by: javax.faces.el.MethodNotFoundException: efetuaLogin: br.com.ipt.dao.UsuarioDaoBean.efetuaLogin()
        at com.sun.faces.el.MethodBindingImpl.method(MethodBindingImpl.java:226)
        at com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:144)
        at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:92)
        ... 28 more

como se percebe nao consegue encontrar o meu metodo efetuaLogin()…pq??

valeuu…

2 Respostas

M

vi que era a assinatura do metodo…nao pode receber parametros…mudei o metodo…mas gerou um nullPointerException…

06/07/2007 09:26:50 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
com.sun.rave.web.ui.appbase.ApplicationException: #{usuarioDaoBean.efetuaLogin}: javax.faces.el.EvaluationException: java.lang.NullPointerException
        at com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl.cleanup(ViewHandlerImpl.java:559)
        at com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl.renderView(ViewHandlerImpl.java:276)
        at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:107)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245)
        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:137)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:214)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at com.sun.rave.web.ui.util.UploadFilter.doFilter(UploadFilter.java:198)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:619)
Caused by: javax.faces.FacesException: #{usuarioDaoBean.efetuaLogin}: javax.faces.el.EvaluationException: java.lang.NullPointerException
        at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98)
        at com.sun.rave.web.ui.appbase.faces.ActionListenerImpl.processAction(ActionListenerImpl.java:57)
        at javax.faces.component.UICommand.broadcast(UICommand.java:332)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:287)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:401)
        at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:95)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:110)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:213)
        ... 20 more
Caused by: javax.faces.el.EvaluationException: java.lang.NullPointerException
        at com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:150)
        at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:92)
        ... 28 more
Caused by: java.lang.NullPointerException
        at br.com.ipt.dao.UsuarioDaoBean.efetuaLogin(UsuarioDaoBean.java:27)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:146)
        ... 29 more

vo passar os Dao’s


Dao

/*
 * Dao.java
 *
 * Created on 3 de Julho de 2007, 14:12
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package br.com.ipt.dao;


import java.util.List;

import org.hibernate.Session;


public class Dao<T> {

	/**
	 * @param args
	 */
	private final Session session;
	private final Class classe;
	
	public Dao(Session session, Class classe) {
		
	this.session = session;
	this.classe = classe;	
	}
	
	//adiciona
	public void adiciona(T u) {
		
	this.session.save(u);
	
	}
	//remove
	public void remove (T u) {
		
	this.session.delete(u);
	
    }
	//atualiza
	public void atualiza (T u) {
		
	this.session.merge(u);
	
	}
	//lista tudo
	public List<T> listaTudo() {
		
	return this.session.createCriteria(this.classe).list();
		//return this.session.createCriteria(this.classe).add(Restrictions.between(dataEntrega, , arg2)).list();
	
	}
	//procura..pesquisa
	public T procura(Long id) {
		
	return (T) session.load(this.classe, id);
	
	}
	//return session
	protected Session getSession() {
		
		return session;
	}        
         
	
}

DaoFactory

/*
 * DaoFactory.java
 *
 * Created on 3 de Julho de 2007, 14:22
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package br.com.ipt.dao;


import br.com.ipt.util.HibernateUtil;
import org.hibernate.Session;
import org.hibernate.Transaction;



public class DaoFactory {
	
	private final Session session;
	private Transaction transaction;
	
	public DaoFactory(){
		
		session = HibernateUtil.getSession();		
	}
	public void beginTransaction(){
		
		this.transaction = this.session.beginTransaction();		
	}
	public void commit(){
		
		this.transaction.commit();
		this.transaction = null;
	}
	public boolean hasTransaction() {
		
		return this.transaction != null;
	}
	public void rollback() {
		
		this.transaction.rollback();
		this.transaction = null;
	}
	public void close() {
		
		this.session.close();
	}
	
	//dao nao mais generico e sim especifico...o tipo é agora UsuarioDao e nao mais Dao... 
	public UsuarioDao getUsuarioDao(){
		
		//return new Dao<Usuario>(this.session, Usuario.class);	
		return new UsuarioDao(this.session);
	}
	
	//public Dao<Documento> getDocumentoDao() {
		
	//	return new Dao<Documento>(this.session, Documento.class);
	
	//}
	public DocumentoDao getDocumentoDao(){
		
		return new DocumentoDao(this.session);
	}
	

}

UsuarioDao

/*
 * UsuarioDao.java
 *
 * Created on 3 de Julho de 2007, 14:25
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package br.com.ipt.dao;



import org.hibernate.Query;
import org.hibernate.Session;
import br.com.ipt.modelo.Usuario;

public class UsuarioDao extends Dao<Usuario>{    
    
	
	UsuarioDao(Session session) {
		
		super(session, Usuario.class);
	}
	public Usuario existeUnico (Usuario u) {
		
		String hql = "select u from Usuario as u where u.login = :login and u.senha = :senha ";
		Query query = getSession().createQuery(hql);
		query.setParameter("login", u.getLogin());
		query.setParameter("senha", u.getSenha());
		
		return (Usuario) query.uniqueResult();
		}

}

veja como fico o UsuarioDaoBean

/*
 * UsuarioDaoBean.java
 *
 * Created on 5 de Julho de 2007, 10:13
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package br.com.ipt.dao;

import br.com.ipt.modelo.Usuario;

/**
 *
 * @author Administrador
 */

public class UsuarioDaoBean{
    
    private final DaoFactory daoFactory = null;
    private Usuario usuario;
    private Usuario usu;
    
    public String efetuaLogin() {
		
	UsuarioDao dao = this.daoFactory.getUsuarioDao();
	this.usuario = dao.existeUnico(usu);
	if (this.usuario != null) {
			
		return "sucesso";
		
	} else {
			
		return "falha";
		
                }
	}
    public void logout() {
        
        this.usuario = null;
        
    }
    
    public Usuario getUsuario() {
		
	return usuario;

    }


}

como o metodo existeUnico tem que receber um usuario passei uma referencia a um usuario como usu…mas gerou erro

valeu

M

Olá,

você tem que instanciar seu objeto usuário antes de usá-lo.

:okok:

Criado 6 de julho de 2007
Ultima resposta 8 de jul. de 2007
Respostas 2
Participantes 2