SSH遇到个问题。 我定义了个action,里面有个list,然后list是通过xml赋值的spring xml配置<bean id="PageForwardAction" class="action.PageForwardAction" scope="singleton">
<property name="menuRule">
<list>
<value>1</value>
<value>2</value>
<value>3</value>
</list>
</property>
</bean>
action代码public class PageForwardAction extends ActionSupport{ private List menuRule = new ArrayList();

public PageForwardAction() {
System.out.println("create new");
} public String pageForward() throws Exception {
return SUCCESS;
}
public List getMenuRule() {
return menuRule;
}
public void setMenuRule(List menuRule) {
this.menuRule = menuRule;
}}
我怎么都取不到list的值,后来发现每次调用action的时候,PageForwardAction构造函数都会被调用一次,输出“create new”,然后容器初始化时赋值给menuRule的setter的值就没了,singleton为什么没用? 而且spring里配置的property为什么容器刚启动的时候会调用一次,调用action的就不装配了?。这个是怎么回事 搞不懂啊搞不懂

解决方案 »

  1.   

    单独定义一个id="menuRule "试试
      

  2.   

    你有没有把struts 和 spring整合起来,我想问的是
    object.factory=spring  配置了?
      

  3.   

      
    要去容器拿的那个才是初始化的那个bean 假如一个request请求 调用对应action固定方法如下获取的bean才是你要的bean
     HttpSession session = request.getSession();
      ServletContext application = session.getServletContext();
      WebApplicationContextUtils.getWebApplicationContext(application).getBean("PageForwardAction");
      

  4.   

    struts和spring的结合没配置好吧,就是你请求action的时候实际上没有从spring容器中区获取action对应的bean,所以属性没注入进去
      

  5.   

    private List menuRule = new ArrayList();
    更改成public List menuRule
      

  6.   

    private List menuRule = new ArrayList();
    这句代码应该改为private List menuRule,否则你那个spring里的注入就不起作用了
      

  7.   

        private List menuRule = new ArrayList();  自己看看。。 你每次都new一个肯定没值撒
      

  8.   

    private List menuRule=new ArrayList();每次都初始化一次了,spring根本没有注入成功。
      

  9.   

    如果把new去掉的话,会出现java.lang.NullPointerException
      

  10.   

    如果把new去掉的话,会出现java.lang.NullPointerException