[Resolvido] Ajuda Com Spring + JSF 2.0!

9 respostas
D

Alguem pode me ajudar? criei um Bean com o objeto interface IAgendaService como segue o Codigo

@ManagedBean
public class AgendaBean {
	
	private String username;
	private String password;
	
	private HabilitaCampos habilitaBotoes = HabilitaCampos.DESABILITAR;
	
	//--------------------- SERVICE --------------------------------------------------
	
	private IAgendaService agendaService;

Este Codigo tem que Instanciar a IMPL pelo Spring mas nao estou conseguindo… esta dando o erro

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: java.lang.NullPointerException
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:325)

root cause

javax.faces.el.EvaluationException: java.lang.NullPointerException
	javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
	com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	javax.faces.component.UICommand.broadcast(UICommand.java:315)
	javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:775)
	javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267)
	com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)

root cause

java.lang.NullPointerException
	agenda.AgendaBean.pesquisarContatos(AgendaBean.java:122)
	agenda.AgendaBean.abrirCadastrados(AgendaBean.java:54)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:597)
	org.apache.el.parser.AstValue.invoke(AstValue.java:262)
	org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
	com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:98)
	javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	javax.faces.component.UICommand.broadcast(UICommand.java:315)
	javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:775)
	javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267)
	com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)

Acho que ele nao esta inicializando o agendaService…

Sera que alguem pode me ajudar?

segue o meu Aplication Context

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">        

  	
	<!-- **************************************************** DEPENDENCY INJECTION ****************************************************************************** -->

   <!-- Service -->

    <bean id="agendaService" class="agenda.service.impl.AgendaServiceImpl" />
    <bean name="agendaBean"
          class="agenda.AgendaBean">
          <property name="agendaService" ref="agendaService" />
    </bean>

</beans>

WEB XML

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 
  <display-name>AgendaWeb</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
  
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
  
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>
   
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>



  
</web-app>

Tenho certeza que deve estar faltando algo!! mas nao sei o que é…

Agradeço quem puder ajudar!!!

VAleu!!

9 Respostas

denislima

cara so uma dica…

edita seu post e coloca seus codigos entre a tag code para facilitar o entendimento…

valeu…

D

denislima:
cara so uma dica…

edita seu post e coloca seus codigos entre a tag code para facilitar o entendimento…

valeu…

Editado!! foi mal!

maiconramones

Opa,

Cara coloca o stacktrace completo do erro. Isso facilita pra gente poder te ajudar.

Porque NullPointerException pode acontecer por n motivos.

Abraço

D

maiconramones:
Opa,

Cara coloca o stacktrace completo do erro. Isso facilita pra gente poder te ajudar.

Porque NullPointerException pode acontecer por n motivos.

Abraço

Editado!! valeu
:wink:

jpjcjbr

Boa tarde,

O problema é que seus beans do spring são gerenciados pelo spring e não pelo jsf, ou seja, você precisa configurar uma integração entre o spring e o jsf de modo que o spring gerencie a criação dos beans do jsf, segue um exemplo:

http://www.mkyong.com/jsf2/jsf-2-0-spring-hibernate-integration-example/

A parte da configuração que faz toda a magica nessa integração é o org.springframework.web.jsf.el.SpringBeanFacesELResolver que fica configurado no faces-config

espero ter ajudado, qualquer dúvida estamos aew

flws

maiconramones

Olha eu confesso que não vi o link que o colega passou.

Mas eu injeto os beans na minha controler assim:

@ManagedProperty(value="#{minhaService}") private MinhaService minhaService;

finotti

Segue um exemplo integrando JSF2, Spring 3 e Hibernate 3.

D

Vou Olhar os Tutoriais!!

Obrigado pela ajuda pessoal!!

D

Resolvido!! Estava Faltando esta Configuracao no Faces-Config

o que o jpjcjbr falou estava certo!

<application>
   	<el-resolver>
    		org.springframework.web.jsf.el.SpringBeanFacesELResolver
   	</el-resolver>
 </application>

 <managed-bean>
 
  <managed-bean-name>agendaBean</managed-bean-name>
  <managed-bean-class>agenda.AgendaBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
  		<managed-property>
			<property-name>agendaService</property-name>
			<value>#{agenda.service.impl.AgendaServiceImpl}</value>
		</managed-property>
 </managed-bean>

Obrigado Pessoal!! :smiley:

Criado 17 de fevereiro de 2011
Ultima resposta 18 de fev. de 2011
Respostas 9
Participantes 5