举个例子,我有一个编辑页面,通过action得到数据库里的一个list集合,在插入或更改数据库以前,我需要在页面对list集合进行增删改的操作。由于每次增删改都会刷新一次页面,action里面那个list存不住值。我想把action里面的list集合设置成静态的,但是听说静态会影响线程安全,网上也是建议尽量不要用静态,想问问大家有没有什么更好的办法或者我不知道的技术,谢谢大家!

解决方案 »

  1.   

    在action里执行完自己的业务逻辑然后再给list赋值,
    会回显的
      

  2.   


    是的,但问题是之前的list已经丢失了。比如我在页面做了一个增的操作,action处理完就给list赋值,我再做一个增的操作,前面的那个就没有了每调用一次action,private List<XXX> XX=new ArrayList<XXX>。用static定义成静态的就没有问题,但是static不完全。两个用户同时操作,用的是一个静态变量。
      

  3.   


    打错了,是static不安全,两个用户同时操作,用的是一个静态变量。
      

  4.   

    可以自己写一个类,把list与用户唯一标识(用户ID或者session,要看你的系统结构)关联起来,通过唯一标识调整list的内容。
    class List2User{
        int userid;
        List<?> list;
    }……
    static List2User list;
    ……
      

  5.   


    是的,但问题是之前的list已经丢失了。比如我在页面做了一个增的操作,action处理完就给list赋值,我再做一个增的操作,前面的那个就没有了每调用一次action,private List<XXX> XX=new ArrayList<XXX>。用static定义成静态的就没有问题,但是static不完全。两个用户同时操作,用的是一个静态变量。那就别刷新页面
    用ajax
      

  6.   


    是的,但问题是之前的list已经丢失了。比如我在页面做了一个增的操作,action处理完就给list赋值,我再做一个增的操作,前面的那个就没有了每调用一次action,private List<XXX> XX=new ArrayList<XXX>。用static定义成静态的就没有问题,但是static不完全。两个用户同时操作,用的是一个静态变量。那就别刷新页面
    用ajax
    谢谢,我用dwr框架试一试,非常感谢!