JSF + Spring Annotations + NullPointerException

2 respostas
B

Tenho um método que ira salvar um registro no MySql
porem tenho o seguite problema:

javax.faces.FacesException: #{addressBook.save}: javax.faces.el.EvaluationException: /addressBook/form.xhtml @35,96 action="#{addressBook.save}": java.lang.NullPointerException
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:78)
	at javax.faces.component.UICommand.broadcast(UICommand.java:312)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:267)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:381)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:63)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
	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:667)
	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)

Meu faces-config:

<faces-config>
 <managed-bean>
  <managed-bean-name>addressBook</managed-bean-name>
  <managed-bean-class>jvm.addressbook.actions.AddressBookBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>
 
 <managed-bean>
  <managed-bean-name>addressBookVo</managed-bean-name>
  <managed-bean-class>jvm.addressbook.vo.AddressBookVo</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 
 <managed-bean>
  <managed-bean-name>addressBookDao</managed-bean-name>
  <managed-bean-class>jvm.addressbook.dao.AddressBookDao</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 
 <application>
  <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
  <message-bundle>messages</message-bundle>
 </application>
</faces-config>

Action do meu bean com o método save:

private CrudDao<AddressBookVo, Long> addressBookDao;

public CrudDao<AddressBookVo, Long> getAddressBookDao() {
  return addressBookDao;
		
}

public void setAddressBookDao(CrudDao<AddressBookVo, Long> addressBookDao) {
   this.addressBookDao = addressBookDao;
}


public String save(){

 if (addressBookVo.getId() == null) {
	
        //LINHA ONDE OCORRE O ERRO
       addressBookDao.save(addressBookVo);
       addMessage("createSuccess");
					
  } else {
   addressBookDao.update(addressBookVo);
   addMessage("updateSuccess");
  } 
   return "def:form";
	
  }

Minha interface:

public interface CrudDao<T extends Serializable, PK extends Serializable> {
	

	Class<T> getEntityClass();
	
        @Transactional(propagation=Propagation.REQUIRED)
	T save(final T object);
}

Meu metodo no DAO Genérico:

public T save(T object) {
    	try {
            this.getSession().save(object);
            this.getSession().flush();
            return object;
        } catch (final HibernateException e) {
            throw convertHibernateAccessException(e);
        }
    }

Ja verifiquei no objeto a ser salvado que os atributos estão todos vindo preenchidos,
mas mesmo assim o erro é ocasionado por um nullPointerException na linha save da action do meu bean,
colocando um breakpoint na linha que ocorre o erro de cara o método save vai para InvocationTargetException(parece algum problema
de reflexão)…Alguem ja passou por este problema??

obrigado.[]'s

2 Respostas

leootorres

Beno, estou passando pelo mesmo problema. Vc conseguiu resolver??

B

Poxa cara… Não lembro , isso faz tanto tempo …

Criado 20 de abril de 2008
Ultima resposta 12 de abr. de 2012
Respostas 2
Participantes 2