//jsp部分 <input type="checkbox" value=<c:out value="${status.index}"/> name="pkIndexs" <c:forEach items="${listArr}" var="pk" ><c:if test="${pk == item.id}" >checked</c:if> </c:forEach> /> <input type="hidden" value=<c:out value="${pksStr}"/> name="pksStr" /> <input type="hidden" value=<c:out value="${status.index}"/> name="allPkIndexs"/> <input type="hidden" value=<c:out value="${item.id}"/> name="pks" /> //算法部分 tring[] pkIndexs = request.getParameterValues("pkIndexs"); //当前页面所有的checkbox索引 String[] allPkIndexs=request.getParameterValues("allPkIndexs"); //商品Id,要存入Map的值 String[] pks = request.getParameterValues("pks"); //新建一个Map,存商品信息 Map mapPK=new HashMap(); //新建一个List,用于页面数据传递 List pksList=new ArrayList(); //得到之前所选择的商品信息,并进行赋值,继续传递 String pksStr=request.getParameter("pksStr"); //查询没有选中的商品信息pkIndexs,allPkIndexs的值 //新建一个ArrayList 用于存放没有选中的商品 ArrayList pksListConnection= new ArrayList(); Map mapDel=new HashMap(); //计算没有选中的商品 if(allPkIndexs!=null){ if(pkIndexs!=null){ for(int i=0;i<allPkIndexs.length;i++){ mapDel.put(allPkIndexs[i],allPkIndexs[i]); } for(int j=0;j<pkIndexs.length;j++){ if(mapDel.containsKey(pkIndexs[j])){ mapDel.remove(pkIndexs[j]); } } Iterator it=mapDel.values().iterator(); while(it.hasNext()){ pksListConnection.add(it.next().toString()); } }else{ for(int i=0;i<allPkIndexs.length;i++){ pksListConnection.add(allPkIndexs[i]); } } } // 存入之前所选中的所有协议商品到 商品Map if(pksStr!=null&&!pksStr.equals("")){ String[] pksArr= pksStr.split(";"); for(int i=0;i<pksArr.length;i++){ mapPK.put(pksArr[i], pksArr[i]); } } //增加当前选中页的协议商品到 商品Map if(pkIndexs!=null){ for(int i=0;i<pkIndexs.length;i++){ int index = Integer.parseInt(pkIndexs[i]); String key = pks[index]; if(!mapPK.containsKey(key)){ mapPK.put(key, key); } } } //如果没有选中的商品之前有选中,则删除 for(int i=0;i<pksListConnection.size();i++){ String pksTemp=(String) pksListConnection.get(i); if(!mapPK.isEmpty()){ int index = Integer.parseInt(pksTemp); if(mapPK.containsKey(pks[index])){ mapPK.remove(pks[index]); } } } //转换为可循环的Itetator Iterator it=mapPK.values().iterator(); pksStr=""; //循环Itetator商品,加入List,方便页面进行checkbox的默认checked while(it.hasNext()){ pksStr +=it.next().toString()+";"; } if(!"".equals(pksStr)&&pksStr!=null){ String[] pksArr=pksStr.split(";"); for(int i=0;i<pksArr.length;i++){ pksList.add(pksArr[i]); } } request.setAttribute("mapPK", mapPK); request.setAttribute("pksStr", pksStr); request.setAttribute("listArr", pksList); 记录......