JSP中复选框向后台传值

来源:互联网 发布:中小企业优化解决方案 编辑:程序博客网 时间:2024/05/22 05:23
JSP中复选框向后台传值
2008-10-09 14:41

前台在JSP页面上选中多个选项, 把这些值传到servlet里面, 完成对班级课程的添加。
在JSP中用checkbox实现多选,所有的chekbox都命同样的名,在后台接收到的就是一个字符串数组。
可用它来接收:String[] 字符串名 = request.getParameterValues("表单名");
然后用字符串的.lenth属性可以得出数组的长度。
由于除了第一列表单可以只把选中的传到后台,其它的都会全部一起传过去,不管有没有选中,在这里可以用下标的判断哪些是选中了的值, 而下标可以通过一个隐藏域传到后台, 
隐藏域的HTML标签为: <input type="hidden" value="“ name="">

----------------------------------------------Jsp页面--------------------------------------------------------
         <form action="<%=basePath%>servlet/TermCourseServer?pattern=added"
          method="post">
          <table border="1" align="left">
           <tr>
            <th width="110">
             班级:
            </th>
            <td>
             <select name="termId">
              <%
                for (int i = 0; i < terms.size(); i++) {
                Term term = terms.get(i);
              %>
              <option value="<%=term.getId() %>">
               <%=term.getTermName()%>
              </option>
              <%
              }
              %>
             </select>
            </td>
           </tr>
           <tr>
            <th>
             选择
            </th>
            <th>
             名称
            </th>
            <th>
             老师
            </th>

            <%
              for (int i = 0; i < courses.size(); i++) {
              Course course = courses.get(i);
            %>
          
           <tr>
            <td>
             <input type="hidden" value="<%=course.getId() %>" name="courseId">//利用隐藏域来接收courseId的值,而在下面的复选框则接受的是下标值
             <input type="checkbox" value="<%=i %>" name="index">
            </td>
            <td>
             <%=course.getCourseName()%>
            </td>
            <td>
             <select name="teaId">
              <option value="null">
               ---请选择老师---
              </option>
              <%
                ArrayList<TeacherInfo> teachers1 = new JTermCourses(course)
                .getTeachers();                     //被封装了的JTermCoursebean;
                for (int j = 0; j < teachers1.size(); j++) {
                 TeacherInfo teacher = teachers1.get(j);
              %>

              <option value="<%=teacher.getId()%>">
               <%=teacher.getTeaName()%>
              </option>
              <%
              }
              %>
             </select>
            </td>
           </tr>
           <%
           }
           %>
           </td>
           </tr>
           <td align="center" colspan="2">
            <input type="submit" value="确定">
            &nbsp;&nbsp;&nbsp;&nbsp;
            <input type="reset" value="取消">
           </td>
           </tr>
          </table>
         </form>

---------------------------------------------Servlet页面-------------------------------------------

private void added(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
   String termId = request.getParameter("termId");
   String[] courseIds = request.getParameterValues("courseId"); //接收前台的值传,为一一对应的数组
   String[] teaIds = request.getParameterValues("teaId");
   String[] indexs = request.getParameterValues("index");

   for (int i = 0; i < indexs.length; i++) {
    int nIndex = new Integer(indexs[i]);     //new Integer():即是强转换成整型变量。用来获得下标值
    TermCourse termCourse = new TermCourse();
    termCourse.setTermId(termId);
    termCourse.setCourseId(courseIds[nIndex]);         //通过数组下标来得到被选中的值,下面也同样的。
    termCourse.setTeaId(teaIds[nIndex]);
    new TermCourseDAO().add(termCourse);
   }
   response.sendRedirect("TermCourseServer?pattern=add");    //返回到添加的servlet,到添加的页面。
}

 

http://hi.baidu.com/jiong0818/blog/item/9ba33c1199329416b9127ba7.html