最近看到好多人问关于处理checkbox 的问题,
现对这个问题谈下我自己的做法!
问题:(引用 TNT_fireball(毅) 的问题。http://community.csdn.net/Expert/topic/3947/3947484.xml?temp=.2331659)
----------------------------------------------------------------我想做选课系统,外观如下: 学期         课程名称    程类别  学分   成绩  绩点  备注  重修    选课与否
2003-2004(上)   统计学    必修课    3     98    4                checkbox (0/1)
......        ......     .....   ...... ...... ...... ......     checkbox (0/1)
......                                                           checkbox (0/1)
.....                                                            checkbox (0/1)
.....                                                            ..........      
因为课程名称是从数据库里面一张schedule表里面调出来的,课程数量根据表的情况有多有少,开始是不知道的,所以checkbox的value值的数量和名称定义都是动态,所以不能用checkbox value=1,2,3,4这样一开始就设定好,那应该怎么设定呢? 郁闷 查不到相关的东西啊~然后我想记录到数据库SC表--select course的课程信息,形式如:学生编号----课程编号  一个表,两个属性,两个属性整体作为主键。能不能提供一些根据checkbox选择信息来记录到数据库的思路和例子呢?我才啃JSP的 搞不定啊,已经在努力学习了,在这里虚心求教了,大家!重新整理后的问题:(引用 TNT_fireball(毅) 的问题。http://community.csdn.net/Expert/topic/3947/3947484.xml?temp=.2331659)
-------------------------------------------------- 
上面的外观变了,现在重写一下,因为第一次提问不会用这个系统,见谅啊各位~
我想做选课系统,外观如下: 学期         课程名称    程类别  学分   成绩  绩点   选课与否
2003-2004(上)   统计学    必修课    3     98    4    checkbox (0/1)
......        ......     .....   ...... ...... ......checkbox (0/1)
......                                               checkbox (0/1)
.....                                                checkbox (0/1)
.....                                                ..........      
因为课程名称是从数据库里面一张schedule表里面调出来的,课程数量根据表的情况有多有少,开始是不知道的,所以checkbox的value值的数量和名称定义都是动态,所以不能用checkbox value=1,2,3,4这样一开始就设定好,那应该怎么设定呢? 郁闷 查不到相关的东西啊~然后我想记录到数据库SC表--select course的课程信息,形式如:学生编号----课程编号  一个表,两个属性,两个属性整体作为主键。能不能提供一些根据checkbox选择信息来记录到数据库的思路和例子呢?我才啃JSP的 搞不定啊,已经在努力学习了,在这里虚心求教了,大家! 
继续问:(引用 TNT_fireball(毅) 的问题。http://community.csdn.net/Expert/topic/3947/3947484.xml?temp=.2331659)
---------------------------------
请问 那是不是就要变成从schedule表里面一次只能读出5条记录,然后让用户选课提交,“一个学号对应一个课程号”记录到数据库里面,再读出schedule的下5条显示,用户提交啊?? 
不然如果一次全部读出schedule的内容就会是:课程1 .........checkbox(value="1")
......            ...............
课程6 .........checkbox(value="1")那怎么区分不同课程被选定好录入数据库呢?
能不能讲解一下呢?? 我真是没有头绪了以下是我对这个问题的解答:
------------------------------------------------------------首先这些 checkbox 必须具有相同的 property,然后用 value 对他们加以区别,
<html:checkbox  property="name"  value="张三"  checked="checked">张三</html:checkbox>
<html:checkbox  property="name"  value="李四"  checked="checked">李四</html:checkbox>
<html:checkbox  property="name"  value="王五"  >                      </html:checkbox>这里有三个选项,只有 张三、李四被选中。在你的应用中,你可以定义一个数组,
String[] names=request.getParameterValues("name");这个时候 names 就自动只取了选中的项,
int sum=names.length;     //这里i等于2然后就可以利用 for 循环对提交的信息进行处理了!
for( int i = 0; i < sum ; i ++){       out.println(names[i].value);    //实际的业务}----------------------------------------------------
这样的问题,就是这样解决的!
共同学习!

解决方案 »

  1.   

    楼上说的和楼主本意并不符合。你的回复一,这个checkbox是动态的,它的name并不一样,<input type="checkbox" name="chk1">
    <input type="checkbox" name="chk2">...
    对于动态的这种类型,用map-backed form做最适合不过。你的回复二,checkbox的属性是相同的,但是你介绍的只是如何接受到这些数据,而楼主的则是,已经知道数据,如何根据这些数据,和checkbox一一对应上,符合的就勾选checkbox。本来这些用jsp是可以实现的,但是介于服务器端要进行嵌套循环来匹配,多少会有些性能损失,所以还是把它放到客户端来,让客户端的js脚本来进行分析比较好些。
      

  2.   

    请mxlmwl(飞星)—告诉我怎么用JS脚本作。主要取值,我是用的STRUTS
      

  3.   

    form.getStrArray()是在formbean 里面定义的字符数组接受html:multibox 传过来的值
    我在actionbean 里面这样进行赋值给DAO。怎么不行。请高手们帮一帮我!
    String nums[]=new String[4];   String str="";
      for( int i=0; i<form.getStrArray().length; i++)
       {
       str = str + nums[i].toString(); 
       }
       cont.setHobby(str);
      

  4.   

    String nums[]=new String[4];   String str="";
      for( int i=0; i<form.getStrArray().length; i++)
       {
       str = str + nums[i].toString(); 
       }
       cont.setHobby(str);
    先是String nums[]=new String[4];,然后就str = str + nums[i].toString(); 这样你能拿到值吗?
    你是对form.getStrArray()循环的啊,当然要取的时候是
    String[] a=form.getStrArray();
    然后str=str+a[i]了。而且感觉你写的也比较混乱,一会是从数据库取数据,一会又从页面中取数据,到底是谁给谁赋值啊。
      

  5.   

    谢谢,飞星,我数据已经存进去了。
             请你飞星我怎么把字符串 Hobby="12" 存到数组里面去strArray={"1","2"}如果字符串是Hobby=“1234”strArray={"1","2",“3”,”4“}
      

  6.   

    呵呵,一个最简单的就是
    String str="1234";
    String[] array=new String[str.length()];
    for(int i=0;i<str.length();i++)
    {
    array[i]=String.valueOf(str.charAt(i));
    }
    当然还可能有更好的方法。
      

  7.   

    飞星非常感谢你。我全搞定了。没有你的帮助我难搞定。我以前是搞.net 和delphi.现在开发一个OA用struts,hibernate,spring 全是新东西.对JAVA 也不熟.所以作起很难.以后有问题还请你多多指教.你能不能告诉我你的QQ啊?