项目使用ssh进行开发,使用ajax+jquery实现select列表的联动
《通过部门与岗位进行举例说明》:
效果图:(其中的岗位和部门纯属乱写,可以不予理会)
第一,创建部门和岗位的实体类,项目主要是通过ssh来进行整合,在建立完实体类后,进行关系的映射,下面贴主要代码:
部门和岗位由于一个部门拥有多个岗位,实现了一对多的关系,在部门实体类中中放岗位的set集合,在岗位中方部门的实体:
private Branch branch;//部门
public Branch getBranch() {
return branch;
}
public void setBranch(Branch branch) {
this.branch = branch;
}
return branch;
}
public void setBranch(Branch branch) {
this.branch = branch;
}
映射关系:<set name="jobs" lazy="false" cascade="all" inverse="true"> //必须使用懒加载
<key column="bid"></key>
<one-to-many class="com.jgz.company.job.Job"/>
</set>
<key column="bid"></key>
<one-to-many class="com.jgz.company.job.Job"/>
</set>
=========================================================================================
private Set<Job> jobs; //岗位public Set<Job> getJobs() {
return jobs;
}
public void setJobs(Set<Job> jobs) {
this.jobs = jobs;
}
映射关系:<many-to-one name="branch" class="com.jgz.company.branch.Branch" column="bid"></many-to-one> 注意:如果在岗位中还存在一对多的关系时:在配置映射关系时,也必须使用懒加载,否则会报错
================================================================================================
================================================================================================
在jsp页面中,首先将用过查询将部门的名称加到第一个select中,该步骤比较简单,不予解释。。。。
通过获取部门select中获取部门的bid(相当于岗位的外键),(其中采用了sturts2中的值栈),将bid 用ajax传到后台,后台过查询处理返回json数据,然后进行前台的处理:代码:
jsp页面ajax:
function findjob(branch){
var branchname = document.getElementById("selectbid").value;
//alert(branchname);
$.ajax({
url:"job_jobFindByBranch", //后台查询路径
data:{bid:branchname}, //传递的参数(bid)
type:"post" ,
success:function(data){
var obj = eval ("(" + data + ")"); //解析json数据
$("#selectjid").empty(); //先清空在加载 ,,否则会出现累计添加
for(var i = 0; i<obj.length;i++) { /遍历集合
//alert(obj[i].jname);
$("#selectjid").append("<option value ='obj[i].jid'>"+obj[i].jname+"</option>"); //添加到岗位的select中
}
});
}
var branchname = document.getElementById("selectbid").value;
//alert(branchname);
$.ajax({
url:"job_jobFindByBranch", //后台查询路径
data:{bid:branchname}, //传递的参数(bid)
type:"post" ,
success:function(data){
var obj = eval ("(" + data + ")"); //解析json数据
$("#selectjid").empty(); //先清空在加载 ,,否则会出现累计添加
for(var i = 0; i<obj.length;i++) { /遍历集合
//alert(obj[i].jname);
$("#selectjid").append("<option value ='obj[i].jid'>"+obj[i].jname+"</option>"); //添加到岗位的select中
}
});
}
Action中查询代码:
public String jobFindByBranch() {
//job = jobService.jobFindByBid(bid);
Branch branch = branchService.branchFindByBid(bid); //相当于Dao查询
Set<Job> jobs = branch.getJobs(); //返回的是Set集合 ,
//job = jobService.jobFindByBid(bid);
Branch branch = branchService.branchFindByBid(bid); //相当于Dao查询
Set<Job> jobs = branch.getJobs(); //返回的是Set集合 ,
try {
ServletActionContext.getResponse().setCharacterEncoding("utf-8"); //设置编码
ServletActionContext.getResponse().setCharacterEncoding("utf-8"); //设置编码
===============在进行json数据的转换时:首先要入包,不予多说=================
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setExcludes(new String []{"branch","jtime","jdesc","staff","handler","hibernateLazyInitializer"});
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setExcludes(new String []{"branch","jtime","jdesc","staff","handler","hibernateLazyInitializer"});
setExcludes()方法是清除不用的数据 ,其中"handler","hibernateLazyInitializer" 主要是由cglib字节码生成器生成的动态代理类型,
在这个子类中又添加了新的属性("handler","hibernateLazyInitializer"),如果不进行配置的话
在json转化是会出错,所以将其过滤掉。
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); //也是一种过滤
JSONArray jsonArray = JSONArray.fromObject(jobs, jsonConfig);
String json = jsonArray.toString();
System.out.println(json);
ServletActionContext.getResponse().getWriter().write(json);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); //也是一种过滤
JSONArray jsonArray = JSONArray.fromObject(jobs, jsonConfig);
String json = jsonArray.toString();
System.out.println(json);
ServletActionContext.getResponse().getWriter().write(json);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return NONE;
}
}
}
}
================================================================================================
以上就是所有的内容:在这其中主要是Set集合的一个json转换,要充分利用json里面的方法。否则会报各种错误!!!!!!!!!!!!!!
希望能够对各位有用!!!
![微笑](http://static.blog.csdn.net/xheditor/xheditor_emot/default/smile.gif)