我做的是用复选框自主选择一些项目,然后提交,最后显示出来所有选择过的项目。
现在我是把复选框的value以数组形式写进了session里记录
具体是:把session中原来存的字符串分割(String的split方法),保存到数组array(ArrayList类型)中,再将传过来的check数组分别写入array中,最后转换为String类型再存到session中
现在问题是进行选择后,没能实现对某一项的修改(修改选择),有人说用HashMap来记录每页的ArrayList,不过我总试不成功,也有点不明白,那位有这方面的例子,给借鉴一下?String[] records = request.getParameterValues("check");
if (records != null)
{
ArrayList array = new ArrayList();
String temp = (String)session.getAttribute("IT_Code");
int i = 0;
if (temp != null)
{
String[] values_split = temp.split(",");
for (i = 0; i < values_split.length; i++) 
{
array.add(values_split[i]);
}
} i = 0;
while (i < records.length) // 将新提交上来的ID号添加到数组中
{
int flag = 0;
for (int j=0; j<array.size(); j++)
{
if (array.get(j).equals(records[i]))
flag = 1;
}
if (flag == 0)
array.add(records[i]);   
i++;
}
// 现在全部ID都已添加到数组中,下面重新将其保存到session中
temp = "";
for (i = 0; i < array.size(); i++)
{
temp += (String)array.get(i)+",";  
}
temp.substring(0, temp.length()-1); // 去掉最后多加的一个逗号
//out.println("temp="+temp);
session.setAttribute("IT_Code",temp);   
//out.println("a="+session.getAttribute("IT_Code"));
}

解决方案 »

  1.   

    没有看明白你的意思
    给你一个设定 checkbox默认值的js/************************************By *****************************\
    | 函数名称:set_checkbox
    | 传入参数:objStr为控件名称 theValue为值 sel为boolean值,是否选中
    | 返回值:无
    | 函数功能:设置checkbox控件指定值的项的选取状态
    | 作者:
    | 创建日期:2004年11月15日
    | 修改者: 
    | 修改日期:2006
    | 修改功能:
    * 例子: 如果让名字为policy_level3_id_1_1 的checkbox 的值为 7 和 2 的 checkbox 状态为checked=true
    * set_checkbox_new('policy_level3_id_1_1','7#&#2','#&#',true) 这样 checkbox 的值为72 或7222 ,777722 的都不会被选定
    * 参数: objStr checkbox的name,
    *  theValues要判断的字符串
    *  splitBy 字符串的值以splitBy分割
    *  state 对应的checkbox 的状态
    *  1.把eval 方式更改成 getElementsByName
    |          2.增加了更安全的验证方式  把values 以splitBy分割开
    |
    \*********************************************************************************/
    function set_checkbox_obj(objCheckbox,theValues,state)
    {
    try
    {
    if(objCheckbox.length)
    {
    for(var i=0;i<objCheckbox.length;i++)
    {
                                if(theValues.indexOf(objCheckbox[i].value) >= 0)
    objCheckbox[i].checked = state;
                                else
                                 objCheckbox[i].checked = !state;
    }
    }
    else
    {
                      if(theValues.indexOf(objCheckbox.value) >= 0)
    objCheckbox.checked = state;
                      else
                       objCheckbox.checked = !state;
    }
    }
    catch(e){}
    }/**
     * 函数功能:设置checkbox控件指定值的项的选取状态
     * @param: objCheckbox 需设置的控件
     * @param: thvalues 用逗号分隔的字符串值
     * @param: state true 或 false
     */
    function set_checkbox(objStr, theValues, state)
    {
          var objCheckbox = eval(objStr);
            set_checkbox_obj(objCheckbox, theValues, state);
    }
    //================================new====================================
    /**
     * 例子: 如果让名字为policy_level3_id_1_1 的checkbox 的值为 7 和 2 的 checkbox 状态为checked=true
     * set_checkbox_new('policy_level3_id_1_1','7#&#2','#&#',true) 这样 checkbox 的值为72 或7222 ,777722 的都不会被选定
     *
     * objStr checkbox的name,
     * theValues要判断的字符串
     * splitBy 字符串的值以splitBy分割
     * state 对应的checkbox 的状态
     */
    function set_checkbox_new(objStr, theValues,splitBy, state)
    {
           var objCheckbox = document.getElementsByName(objStr);
            set_checkbox_obj_new(objCheckbox, theValues,splitBy, state);
    }function set_checkbox_obj_new(objCheckbox,theValues,splitBy,state)
    {
    try
    {
    if(objCheckbox.length)
    { tempValues=theValues.split(splitBy); for(var i=0;i<objCheckbox.length;i++)
    {
    objCheckbox[i].checked = !state;//设定初始值 for(j=0;j<tempValues.length;j++) {
    if(tempValues[j]==(objCheckbox[i].value))
    objCheckbox[i].checked = state;
    }
    }
    }
    else
    {
                      if(theValues.indexOf(objCheckbox.value) >= 0)
    objCheckbox.checked = state;
                      else
                       objCheckbox.checked = !state;
    }
    }
    catch(e){}
    }
      

  2.   

    我就是想记录chexk中选中的项(包括修改选择),然后提交,在另外一页显示出所有选择的结果