因为两次执行时使用的是同一个ABC的实例,而且list定义在execute的外面

解决方案 »

  1.   

    WEB访问是多线程的,但在Struts中,Action的实例的个数是有限的,并不是每次都产生一个,
    所以你给这个类定义的属性不应该在任何方法中修改(也就是不能赋值,ArrayList、Map这样的对象不应该在任何方法中调用它的add、remove等方法,可以调用get等不影响对象内部状态的方法)
    所以你的代码中第二次访问的可能是与第一次相同的对象。同理,在jsp中
    <@! %>中的代码也是一样
      

  2.   

    是否是你的struts-config.xml中的<action> 中的scope设成session,改成request试试
      

  3.   

    两次取值不一样啊,第一次是赋值前的,第二次是赋值后的,把变量写在方法里面就都一样了,而且Action的实例只有一个
      

  4.   

    是否是你的struts-config.xml中的<action> 中的scope设成session,改成request试试我觉得这个正确,如果还是赋值得,那么肯定,这个list指向得还是原来得对象,也就是说你得对象生存期不是一个ruquest,至少是session或者application
      

  5.   

    public class BaseAction extends Action {
          public BaseAction() {
          }
    ArrayList list=new ArrayList();
        初始化list,并赋值
    }public class testAction extends BaseAction {
       执行...
    }