有没有人遇到同样的问题··代码执行到Action里时调用biz方法时返回值是空的,报空指针了。。
但测试这个biz方法时没问题的

解决方案 »

  1.   

    不知道你的Action是否是让Spring来管理的,如果是的话,那很可能是Spring没有将Action注入进去或者Action中的Service层没有注入到Action中。
      

  2.   


    明显你的biz没被注入。所以action里调到的biz是空
      

  3.   

    @Controller("indexAction")
    @Scope("prototype")
    public class IndexAction extends ActionSupport implements SessionAware{
    private GoodsBiz goodsBiz; public GoodsBiz getGoodsBiz() {
    return goodsBiz;
    }
    @Resource 
    public void setGoodsBiz(GoodsBiz goodsBiz) {
    this.goodsBiz = goodsBiz;
    } private Map<String,Object> session=new HashMap<String, Object>(); public Map<String, Object> getSession() {
    return session;
    }
    public void setSession(Map<String, Object> arg0) {
    this.session=session;
    }

    private int count; public int getCount() {
    return count;
    }
    public void setCount(int count) {
    this.count = count;
    }


    public String getAllGoods(){
    // try {
    List listGoods = goodsBiz.getAllGoods();  //这事报错的地方
    count=listGoods.size();
    session.put("listGoods", listGoods);
    // } catch (Exception e) {
    // System.out.println(e.getMessage());
    // }
    System.out.println("test_Ok");
    return "index";
    }
    这里面的话有问题没?
      

  4.   

    <struts>
    <constant name="struts.devMode" value="true"></constant>
    <package name="IndexAction" namespace="/" extends="struts-default">
    <action name="indexAction" class="com.demo.action.IndexAction" method="getAllGoods">
    <result name="index">/index.jsp</result>
    </action>
    </package>
    </struts>    
    Struts。xml
      

  5.   

    biz  没有注入到这个 action 里边。
      

  6.   

    你在spring中没配置Action中的对象...
      

  7.   

    <struts>
    <constant name="struts.devMode" value="true"></constant>
    <package name="IndexAction" namespace="/" extends="struts-default">
    <action name="indexAction" class="com.demo.action.IndexAction" method="getAllGoods">
    <result name="index">/index.jsp</result>
    </action>
    </package>
    </struts>  
    Struts。xml你的action是由struts2的容器管理的,没有用到spring容器里管理的acton,因此,你可以这样写试试:
    <constant name="struts.devMode" value="true"></constant>
    <package name="IndexAction" namespace="/" extends="struts-default">
    <action name="indexAction" class="xxx(spring的actionbean)" method="getAllGoods">
    <result name="index">/index.jsp</result>
    </action>
    </package>
    </struts>  
      

  8.   

    补充一下:由于你采用的annotation,你可以这么写:
    <constant name="struts.devMode" value="true"></constant>
    <package name="IndexAction" namespace="/" extends="struts-default">
    <action name="indexAction" class="IndexAction" method="getAllGoods">
    <result name="index">/index.jsp</result>
    </action>
    </package>
    </struts> 
      

  9.   

    同时还应该加入struts-spring的jar包,让spring管理action
      

  10.   

    我已经引用了这段代码了beans的<context:component-scan base-package="com.demo" />
      

  11.   

    如果我没有记错的话,”我已经引用了这段代码了beans的<context:component-scan base-package="com.demo" />“spring的Ioc容器里已经有了这个action的bean,只要加上struts-spring插件让spring管理action,然后再加上class="IndexAction",说明一下,spring的Ioc容器会按照action的类名来创建bean。