1. 利用select的onchange事件来触发一个action
- 院(系): <select name="dep" onchange="selectTeacher()">
- <option value="">请选择...option>
- <option value="computer">计算机科学option>
- <option value="cloth">服装学院option>
- <option value="人文学院">人文学院option>
- select>
2. 调用的js
- <script type=< span="">"">
- function selectTeacher(){
- var form=document.forms[0];
- var dep=form.dep.value;
- alert(dep);
- window.location="SelectServlet?dep="+dep;
- }
- </script>
3. 触发的servlet
- String dep=request.getParameter("dep");
- SelectTeacher select=new SelectTeacher();
- List list=select.selectTeacher(dep);
- request.setAttribute("tlist",list);
- request.setAttribute("dep",dep);
- RequestDispatcher error = request.getRequestDispatcher("/WEB-INF/error.jsp");
- if(list.size()>0){
- RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/student.jsp");
- rd.forward(request, response);
- }
- else{
- error.forward(request, response);
- }
4. 返回1中的页面,显示查询出来的信息
- 任课教师:<select name="teacher" >
- <%
- java.util.List tlist=null;
- if(request.getAttribute("tlist")!=null){
- tlist=(java.util.List)request.getAttribute("tlist");
- for(int i=0;i<tlist.size();i++){%>
- <option value="t"><%=tlist.get(i)%>option>
- <%} }
- %>
- select>
存在的问题:
由于在通过第二步那个servlet返回原页面后,页面被重新加载.这样原来的第一个下拉列表中的信息又被清空了!现在还没有想到较好的方法.
不过要是用struts实现的话就不会出现这样的问题了,只要在action中通过form设置一下就好了!