利用ajax+jquery 实现一对多关系中select列表的联动

项目使用ssh进行开发,使用ajax+jquery实现select列表的联动

《通过部门与岗位进行举例说明》:

效果图:(其中的岗位和部门纯属乱写,可以不予理会)


第一,创建部门和岗位的实体类,项目主要是通过ssh来进行整合,在建立完实体类后,进行关系的映射,下面贴主要代码:
部门和岗位由于一个部门拥有多个岗位,实现了一对多的关系,在部门实体类中中放岗位的set集合,在岗位中方部门的实体:
private Branch branch;//部门                                                
public Branch getBranch() {                   
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>
=========================================================================================
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中
}
});
}
Action中查询代码:
public String jobFindByBranch() {
//job = jobService.jobFindByBid(bid);
        Branch branch = branchService.branchFindByBid(bid); //相当于Dao查询
Set<Job> jobs = branch.getJobs();   //返回的是Set集合 ,
 try {
ServletActionContext.getResponse().setCharacterEncoding("utf-8");  //设置编码
===============在进行json数据的转换时:首先要入包,不予多说=================
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();
}
return NONE;
}
}
================================================================================================
以上就是所有的内容:在这其中主要是Set集合的一个json转换,要充分利用json里面的方法。否则会报各种错误!!!!!!!!!!!!!!

希望能够对各位有用!!!微笑
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值