日期:2014-05-18  浏览次数:20624 次

急需帮助!spring属性注入的问题,help
我的java代码如下:

public class CertAction extends UniformAction {

private CertService certService;

public void setCertService(CertService certService) {
this.certService = certService;
                System.out.println("certService = " + certService);
}
 ....

这个UniformAction是我们公司自己的,类似于struts可以在action-config.xml中配置请求转发。
然后我想注入CertService,程序启动时在setCertService方法中打印出了:certService = com.essp.uas.impl.CertServiceImpl@1b0d2d0,我认为已经注入了。
但在通过页面访问CertAction时,却抛java.lang.NullPointerException,断点certService为null。
请问这种情况一般是什么原因,我猜想会不会于CertAction 的实现机制有关~
以下还有spring配置文件:

  <bean id="certService" class="com.essp.uas.impl.CertServiceImpl">
    <property name="ldapTemplate"><ref bean="ldapTemplate"/></property>
  </bean>
  
  <bean id="certAction" class="com.essp.uas.action.CertAction">
    <property name="certService" ref="certService"/>
  </bean>
spring Spring

------解决方案--------------------
引用:
顺便补充以下,action的配置文件:

<actions context="/certUnBind">
<action path="/search" class="com.essp.uas.action.CertAction"
method="searchUnBind">
<!-- <result name="list">/cert/cert_unbind_list.jsp</result> -->
<result name="list">/cert/cert_unbind_list.jsp</result>
</action>

能用spring加载struts托管bean?
你用倒了吧,struts加载spring bean吧
应该是bean通过spring加载,然后struts来调用spring的bean
------解决方案--------------------
引用:
Quote: 引用:

顺便补充以下,action的配置文件:

<actions context="/certUnBind">
<action path="/search" class="com.essp.uas.action.CertAction"
method="searchUnBind">
<!-- <result name="list">/cert/cert_unbind_list.jsp</result> -->
<result name="list">/cert/cert_unbind_list.jsp</result>
</action>

能用spring加载struts托管bean?
你用倒了吧,struts加载spring bean吧
应该是bean通过spring加载,然后struts来调用spring的bean

应该是这样,可能你页面访问的action实例是由struts本身创建的而不是通过spring获取的;spring的注入只在他自己的bean之间有效,不然你就通过spring上下文去获取service吧