注入的时候是成功的,可以输出内存地址,当你调用action使用这个已经依赖注入的类时,就是null了,调了一下午没发现问题,使用其他bean不会有这样的问题

解决方案 »

  1.   

    lz意思是已经set那个action,但是调用时候出现null?
    1、检查你的struts2、spring包版本是否正确,不要存在包冲突或者不一致问题。
    2、如果真的set进去,你可以写个junit测试一下,applicationContent测试一下就知道是否真的set进去。
    3、如果没有两种方式解决你的问题:
    第一种没有plugin那个jar包情况
    a、配置spring中配置action是由spring来管理,配置prototype等属性,在struts.xml中增加
    <constant name="struts.objectFactory" value="spring" />
    b、然后看你的action是否在spring配置文件中注入
    c、写个测试代码,测试获取的action的hashcode值,或者直接测试action函数。
    第二种有plugin那个jar情况
    a、业务类在Spring配置文件中配置,Action不需要配置,Struts2的Action像没有整合Spring之前一样配置,<action>的class属性指定业务逻辑控制器类的全限定名。
    b、其实Action也不是Struts2创建的,而是Struts2的Spring插件创建的。
    c、写个测试代码,测试获取的action的hashcode值,或者直接测试action函数。
      

  2.   

    看了楼上的意见,今晚在调试一下!还有一点我想说一下,就是其他的在我的那个action类中的其他bean是不会为空,private MenuService menuService;private UserService userService;
    <bean id="MenuNodeAction" class="com.application.action.MenuNodeAction">
    <property name="menuService" ref="MenuService"/>
                    <property name="userService" ref="userService"/>
    </bean>
    第二个userService不会为空;
    在setMenuService方法中的System.out.println(this.menuService.toString());这句话是能够输出地址,但在execute()中System.out.println(this.menuService.toString());就是null而且程序走到这一步就不会往下执行,也不报错;