jsp页面多级联查 怎么把jsp select标签用法中的部门的id传给action 然后保存简历

您好,欢迎来到365爱学网-365网站管理器让建站和seo变得简单,个人站长学习制作网站的平台!
您现在的位置:& >
> struts2 select标签 action传递list集合到jsp,jsp提交到action
struts2 select标签 action传递list集合到jsp,jsp提交到action
文章来源: &&&&点击数:9125&&&&更新时间: 11:48 &&
思路:SetUserAction.java 传递userlist集合到select.jsp页面,jsp页面传递用户的选择到SelectUserAction.java
package com.select.
public class User {
&private S&private& S&&public User(){&&&}&public User(String userno,String username){&&&&this.userno =&&this.username =&}&
&public String getUserno() {&&&}&public void setUserno(String userno) {&&this.userno =&}&public String getUsername() {&&&}&public void setUsername(String username) {&&this.username =&}&&}
SetUserAction.java
package com.select.
import java.util.ArrayLimport java.util.L
import com.opensymphony.xwork2.ActionSimport com.select.bean.U
public class SetUserAction extends ActionSupport {
&private List&User&&&public List&User& getUserlist() {&&&}
&public void setUserlist(List&User& userlist) {&&this.userlist =&}
&@Override&public String execute() throws Exception {
&&List&User& userlist = new ArrayList&User&();&&&&User u1 = new User("1000","王雪");&&User u2 = new User("1001","刘伟");&&User u3 = new User("1002","王金红");&&&&userlist.add(u1);&&userlist.add(u2);&&userlist.add(u3);&&&&setUserlist(userlist);&&&&return SUCCESS;&&&&&}&&}
select.jsp
&s:form action="selectuser.action"&&&&&&&&& &s:select name="user.userno"& list="userlist" listKey="userno"&&&&&&&listValue="username"& /&&&&&&&& &&&&&&&& &s:submit&&/s:submit&&&&& &/s:form&
SelectUserAction.java
package com.select.
import com.opensymphony.xwork2.ActionS
import com.select.bean.U
public class SelectUserAction extends ActionSupport {
&private U
&public User getUser() {&&&}&public void setUser(User user) {&&this.user =&}
&@Override&public String execute() throws Exception {&&&&System.out.print(user.getUserno());&&return SUCCESS;&}&}
------分隔线----------------------------
手机客户端6300人阅读
java项目开发(5)
JSP技术(9)
Java基础(19)
&&& 做查询页面,查询条件比较多的时候往往会涉及到级联。举个简单的例子,拿教务系统来说,我们要查询教学计划信息,查询条件是入学批次、学生层次(专升本、高升专)、专业、课程。
它们之间有什么级联关系呢?入学批次影响学生层次(某个入学批次可能只有专升本或者高升专一个学生层次)、专业、课程,学生层次影响专业、课程,专业又影响课程。也就是说当选择入学批次时,学生层次、专业和课程的下拉框会局部刷新,选择学生层次时,专业和课程的下拉框会局部刷新,选择专业时,课程的下拉框也会局部刷新。
我们当然不希望已经选择的操作随着页面的刷新又被初始化,再者前面提到选择一项后相关的下拉框是局部刷新。很容易想到用填充页面的方法来实现级联。
笔者的填充方法是通过提交,由获取数据,将数据传到辅助的JSP页面,再用回调函数将辅助JSP页面中的数据填充给相应下拉框。说的抽象,直接上代码了,四级级联稍微麻烦一些,知道原理后也好做,笔者上三级级联的代码。级联样式如下图:
JSP页面代码:
&&&&table&
&&&&&&td width=&400px& align=&left&&入学批次:&SELECT NAME=&grade&
&&&&&&id=&grade& onchange=&refreshEduLevelAndSpecialAjax();&&&
//选择入学批次会刷新层次和专业
&&&&&&&&OPTION VALUE=&0&&
&&&&&&&&--请选择--
&&&&&&&&&c:forEach items=&${gradeInfo}& var=&gradeInfo&&
&&&&&&&&&&OPTION VALUE=&${gradeInfo.gradeName}&&${gradeInfo.gradeName}&&&&&&&&&
&&&&&&&&&/c:forEach&
&&&&&&/SELECT&&/td&
&&&&&&td width=&400px& align=&left&&统考课程:&SELECT
&&&&&&NAME=&uniExamCourseId& id=&uniExamCourseId&&
&&&&&&&&OPTION VALUE=&0&&
&&&&&&&&--请选择--
&&&&&&&&&c:forEach items=&${unifiedExamCourseList}& var=&uniExamCourse&&
&&&&&&&&&&OPTION VALUE=&${uniExamCourse.id}&&${uniExamCourse.uniExamCourseName}&&&&&&&&&
&&&&&&&&&/c:forEach&
&&&&&&/SELECT&&/td&
&&&&&&td colspan=&2& id=&refreshEduLevelAndSpecialAjax&&&&&
//设置ID,用于填充层次和专业的下拉框
&&&&&&&table&
&&&&&&&&tr&
&&&&&&&&&td width=&400& align=&left&&层&&&&&&&次:&SELECT
&&&&&&&&&NAME=&eduLevelId& id=&eduLevelId&
&&&&&&&&&onchange=&refreshSpecialAjax();&&&&& //选择层次后刷新专业
&&&&&&&&&&&OPTION VALUE=&0&&--请选择--&/OPTION&
&&&&&&&&&&&c:forEach items=&${educationLevel}& var=&educationLevel&&
&&&&&&&&&&&&OPTION VALUE=&${educationLevel.id}&&${educationLevel.educationLevelName}&&&&&&&&&&&
&&&&&&&&&&&/c:forEach&
&&&&&&&&&/SELECT&&/td&
&&&&&&&&&td width=&400& align=&left& id=&refreshSpecialAjax&&专&&&&&&&&业:&SELECT&&&&&&&&&&&&//设置ID,用于填充专业的下拉框
&&&&&&&&&NAME=&specialId& id=&specialId&&
&&&&&&&&&&&OPTION VALUE=&0&&--请选择--&/OPTION&
&&&&&&&&&&&c:forEach items=&${specialList}& var=&special&&
&&&&&&&&&&&&OPTION VALUE=&${special.id}&&${special.specialName}&&&&&&&&&&&
&&&&&&&&&&&/c:forEach&
&&&&&&&&&/SELECT&&/td&
&&&&&&&&/tr&
&&&&&&&/table&
&&&&&&/td&
&&&&/table&
&&&&& &的代码如下:
//JavaScript Document
&var xmlH //用于保存XMLHttpRequest对象的全局变量
&//用于创建XMLHttpRequest对象
&function createXmlHttp() {
&&//根据window.XMLHttpRequest对象是否存在使用不同的创建方式
&&if (window.XMLHttpRequest) {
&&&xmlHttp = new XMLHttpRequest(); //FireFox、Opera等浏览器支持的创建方式
&&} else {
&&&xmlHttp = new ActiveXObject(&Microsoft.XMLHTTP&);//IE浏览器支持的创建方式
&function refreshEduLevelAndSpecialAjax() {
&&var grade = document.getElementById(&grade&).
&&refreshEduLevelAndSpecial(grade);
&function refreshEduLevelAndSpecial(grade) {
&&createXmlHttp(); //创建XMLHttpRequest对象
&&xmlHttp.onreadystatechange = refreshEduLevelAndSpecialE //设置回调函数
&&xmlHttp.open(&POST&, &eduLevelAndSpecialByGradeNameInSpecialDetail&,
&&&&true); //发送POST请求
&&xmlHttp.setRequestHeader(&Content-type&,
&&&&&application/x-www-form-urlencoded&);
&&xmlHttp.send(&grade=& + grade);
&//处理服务器返回的信息 更新层次专业下拉框
&function refreshEduLevelAndSpecialElement() {
&&if (xmlHttp.readyState == 4) {
&&&if (xmlHttp.status == 200) {
&&&&//此处xmlHttp.responseText是请求的*Controller的某个方法返回的渲染页面的源代码
&&&&document.getElementById(&refreshEduLevelAndSpecialAjax&).innerHTML = xmlHttp.responseT
&function refreshSpecialAjax() {
&&var grade = document.getElementById(&grade&).
&&var eduLevelId = document.getElementById(&eduLevelId&).
&&refreshSpecial(grade, eduLevelId);
&function refreshSpecial(grade, eduLevelId) {
&&createXmlHttp(); //创建XMLHttpRequest对象
&&xmlHttp.onreadystatechange = refreshSpecialE //设置回调函数
&&xmlHttp.open(&POST&, &specialByGradeNameAndEduLevelIdInSpecialDetail&,
&&&&true); //发送POST请求
&&xmlHttp.setRequestHeader(&Content-type&,
&&&&&application/x-www-form-urlencoded&);
&&xmlHttp.send(&grade=& + grade + &&eduLevelId=& + eduLevelId);
&//处理服务器返回的信息 更新专业下拉框
&function refreshSpecialElement() {
&&if (xmlHttp.readyState == 4) {
&&&if (xmlHttp.status == 200) {
&&&&//此处xmlHttp.responseText是请求的*Controller的某个方法返回的渲染页面的源代码
&&&&document.getElementById(&refreshSpecialAjax&).innerHTML = xmlHttp.responseT
@RequestMapping(value = &/eduLevelAndSpecialByGradeNameInSpecialDetail&)
&&public ModelAndView getEduLevelAndSpecialByGradeNameInSpecialDetail(HttpServletRequest request,
&&&&HttpServletResponse response) throws JsonParseException, JsonMappingException, JSONException, IOException{&&&
&&&String gradeName=request.getParameter(&grade&);&&&&&
&&&String eduLevelId=request.getParameter(&eduLevelId&);&&&
&&&if(gradeName==null||gradeName.equals(&0&)){&&&&
&&&&gradeName=&null&;
&&&if(eduLevelId==null||eduLevelId.equals(&0&)){&&&&
&&&&eduLevelId=&null&;
&&&ArrayList&UtilObject& eduLevelList=uess.getEduLevelIdByGradeNameInSpecialDetail(gradeName);
&&&ArrayList&UtilObject& specialIdList=uess.getSpecialIdByGradeNameAndEduLevelIdInSpecialDetail(gradeName, eduLevelId);&&&
&&&mav.addObject(&educationLevel&, eduLevelList);
&&&mav.addObject(&specialList&, specialIdList);
&&&mav.setViewName(&scoreManage/uniExamScore/eduLevelAndSpecialAjax&);
&&@RequestMapping(value = &/specialByGradeNameAndEduLevelIdInSpecialDetail&, method = RequestMethod.POST)
&&public ModelAndView getSpecialByGradeNameAndEduLevelIdInSpecialDetail(HttpServletRequest request,
&&&&HttpServletResponse response) throws JsonParseException, JsonMappingException, JSONException, IOException{
&&&String gradeName=request.getParameter(&grade&);&&
&&&String eduLevelId=request.getParameter(&eduLevelId&);&
&&&System.out.println(&grade:&+gradeName+&& eduLevelId:&+eduLevelId);
&&&if(gradeName==null||gradeName.equals(&0&)){&&&&
&&&&gradeName=&null&;
&&&if(eduLevelId==null||eduLevelId.equals(&0&)){&&&&
&&&&eduLevelId=&null&;
&&&ArrayList&UtilObject& specialList=uess.getSpecialIdByGradeNameAndEduLevelIdInSpecialDetail(gradeName, eduLevelId);&&&
&&&mav.addObject(&specialList&, specialList);
&&&mav.setViewName(&scoreManage/uniExamScore/specialAjax&);
后台代码没有给出来,但应该看得懂,就是获取后台数据传到和页面。这两个页面用于填充原页面,通过来填充相应区域,两个页面代码如下。
eduLevelAndSpecialAjax.jsp辅助页面:
&td id=&refreshEduLevelAndSpecialAjax&&&&&&//ID用于填充原页面
&&&&&table&
&&&&&&td width=&400px& align=&left&&层&&&&&&&次:&select
&&&&&&id=&eduLevelId& name=&eduLevelId& onchange=&refreshSpecialAjax();&&
&&&&&&&&option value=&0&&--请选择--&/option&
&&&&&&&&c:forEach items=&${educationLevel}& var=&educationLevel&&
&&&&&&&&&option value=&${educationLevel.id}&&${educationLevel.name}&/option&
&&&&&&&&/c:forEach&
&&&&&&/select&&/td&
&&&&&&td width=&400px& align=&left& id=&refreshSpecialAjax&&专&&&&&&&&业:&SELECT&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//ID用于填充原页面
&&&&&&NAME=&specialId& id=&specialId&&
&&&&&&&&option value=&0&&--请选择--&/option&
&&&&&&&&c:forEach items=&${specialList}& var=&special&&
&&&&&&&&&OPTION VALUE=&${special.id}&&${special.name}
&&&&&&&&/c:forEach&
&&&&&&/SELECT&&/td&
&&&&&&/tr&
&&&&&/table&
specialAjax.jsp辅助页面:
&&td width=&400& align=&left& id=&refreshSpecialAjax&&专&&&&&&&&业:&SELECT
&&&&NAME=&specialId& id=&specialId&&&&& //ID用于填充原页面
&&&&&&option value=&0&&--请选择--&/option&
&&&&&&c:forEach items=&${specialList}& var=&special&&
&&&&&&&OPTION VALUE=&${special.id}&&${special.name}
&&&&&&/c:forEach&
&&&&/SELECT&&/td&
这样就在页面实现了填充。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:394535次
积分:3779
积分:3779
排名:第7176名
原创:56篇
转载:41篇
评论:60条
(1)(3)(1)(1)(3)(6)(2)(7)(1)(5)(6)(1)(1)(1)(1)(1)(2)(7)(2)(1)(7)(11)(17)(1)(8)jsp页面如何实现级联的下拉列表框网站登录首页,如果实现先选择部门,然后在选择人员的功能。。用的是struts2,部门级人员都已经存在数据库中了!请指点一二,尽可能详细点,有代码最好!谢谢
下面的是我做添加班级模块时做的用ajax实现二级联动下拉列表的例子,ajax代码在javascript中,通过第一个下拉列表的onchange方法触发ajax后台自动调用SelectChangeServlet,得到第二个下拉列表的数据。  JScript code  &script language=&javascript&&
var xmlHttpR
function createXMLHttpRequest() {
if(window.XMLHttpRequest) {
xmlHttpRes = new XMLHttpRequest();
} else if(window.ActiveXObject) {
xmlHttpRes = new ActiveXobject(&Microsoft.XMLHTTP&);
function selectchange() {
createXMLHttpRequest();
var department = document.getElementById(&department&).
var url = &selectChangeServlet department=& +
xmlHttpRes.open(&post&, url, true);
xmlHttpRes.onreadystatechange =
xmlHttpRes.send(null);
function callback() {
if(xmlHttpRes.readyState == 4) {
if(xmlHttpRes.status == 200) {
eval(xmlHttpRes.responseText);
function show(){
var department = document.getElementById(&department&).
var classInfo = document.getElementById(&classInfo&).
alert(&您确定是上的课吗?&) ;
jsp中:  HTML code  &tr&
&td&区域 &/td&
&select style=&width: 155px& id=&selectArea& name=&issueTracking.areaCode& onchange=&whenAreaChange();&$>$/select&
&s:textfield name=&issueTracking.areaName& id=&textAreaName& readonly=&true& /&
&td&製程&/td&
&select style=&width: 155px& id=&selectProcess& name=&issueTracking.process&$>$/select&
&s:textfield name=&issueTracking.processName& id=&textProcess& readonly=&true& /&
randolphvip本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 select 级联 的文章

 

随机推荐