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="确定"> <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