如图,我用一个用户可以正常用,保存数据在list里,然后再把list放到一个主单对象里同时保存到数据库;
但我再用另一个浏览器,另一个用户,在list里加入数据时,这是list集合的数据共享了,把在另一个用户的数据也给取出来了!我用的是struts2+spring+hiberante做的;
 我试了好多方法,但都是一样!在这里特请大侠帮住,万分感谢javastruts2spring数据list

解决方案 »

  1.   

    无语了  同一个浏览器session串了  你没见过这个现象?
    开2个QQ空间登2个账号,你刷新一下前1个页面,会变成第2个账号的
    很明显你第2张图换谷歌浏览器了
      

  2.   

    service 用sessionScope,不过真心不要这样用,新的数据再到数据库去取,或放到缓存到缓存去取
      

  3.   

    哈哈!好吧package com.oa.util;import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.Map;
    import accp.bean.User;import com.oa.bean.ClaimVoucherDetail;
    /**
     * 明细报销单 管理
     * @author liangrui
     *
     */
    public  class VocherDetailsManger {

    //明细集合
    private static Map<String,List<ClaimVoucherDetail>> detailsMap=new HashMap<String,List<ClaimVoucherDetail>>();

    //get==========================================================================
    public static Map<String, List<ClaimVoucherDetail>> getDetailsMap() {
    return detailsMap;
    }//add==========================================================================
    public static void addDetailsMap(String userName,ClaimVoucherDetail detail){
    if(detailsMap.containsKey(userName)){//如果有的话
    List<ClaimVoucherDetail> listDetils=detailsMap.get(userName);//取出list


    ClaimVoucherDetail de=new ClaimVoucherDetail();
    de.setItem(detail.getItem());
    de.setAccount(detail.getAccount());
    de.setDesc(detail.getDesc());
    //关联主单
    //de.setBizclaimVoucher(details.getBizclaimVoucher());

    listDetils.add(de);//加入集合
    detailsMap.put(userName, listDetils);
    }else{
    //第一次
    List<ClaimVoucherDetail> listDetils=new LinkedList<ClaimVoucherDetail>();

    ClaimVoucherDetail de=new ClaimVoucherDetail();
    de.setItem(detail.getItem());
    de.setAccount(detail.getAccount());
    de.setDesc(detail.getDesc());
    //关联主单
    //de.setBizclaimVoucher(details.getBizclaimVoucher());

    listDetils.add(de);//加入集合
    detailsMap.put(userName, listDetils);
    }
    }

    //remove================================================================
    public static void removeDetailsMap(String username){
    detailsMap.remove(username);
    }


    }