最近在项目中用到了一个需要联动的地方,我有很多个专业课。每个专业课有很多个知识点。现在我希望的是使用选择了一个专业课之后,对应的知识点在二级下拉框中也对应改变。这个实现如果使用ajax的话,可以实现。
我用的是SSH,struts2中有联动标签,不过这个标签好像并不是很好用。还是说说我的思路吧:我先查出一个专业所对应的专业课,然后根据专业课id来查出专业课所对应的知识点。然后显示在前台,保证专业课和知识点可以联动。
/*
* 查找相应课程名所对应的知识点
* */
public List<Knowl> findkno(int i) {
// TODO Auto-generated method stub
List<Knowl> list=new ArrayList<Knowl>();
list=this.getHibernateTemplate().find("from Knowl as kn where kn.cname="+i);
return list;
}
/*
* 查找相应专业所对应的课程
*/
public List<Cname> findcno(String str) {
// TODO Auto-generated method stub
List<Cname> list=new ArrayList<Cname>();
list=this.getHibernateTemplate().find("from Cname as cn where cn.spec=?", str);
return list;
}
/*
* 查找相应课程所对应的id
*/
public List<Integer> getcnid(String str) {
// TODO Auto-generated method stub
List<Integer> list = new ArrayList<Integer>();
list=this.getHibernateTemplate().find("select cn.cnameId from Cname as cn where cn.cname=?",str);
return list;
}
用一个action来调用这些方法:
lk=new ArrayList<Knowl>();
ls=new ArrayList<Integer>();
map=new HashMap();
list=cdao.findcno("JAVA");//获得java专业所对应的专业课集合
/*
* 遍历课程名得到每一个课程的id
* */
for(int i=0;i<list.size();i++){
String str=list.get(i).getCname();//获得各个专业课所对应的专业课名字
ls=cdao.getcnid(str);//获得每一个专业课的id
for(int z=0;z<ls.size();z++){
int j=(int)ls.get(z);
lk=cdao.findkno(j);//获得每一门专业课所对应的知识点
map.put(j, lk);
}
}
return "success";
list是要交给前台显示的一级菜单。map是要显示的二级菜单.其中j为每个专业课所对应的id。
前台是这样显示的:
<s:doubleselect name="first" list="list" listKey="cname" listValue="cname"
doubleName="second" doubleList="map.get(cnameId)"
doubleListKey="knowl" doubleListValue="knowl"
formName="suibian" theme="simple">
</s:doubleselect>
网上有哥们这样做,doubleList="map.get(top.id)",我试过用,没能实现。map.get(cnameId)也能直接得到那个对象。 listKey="cname"也可一些成cnameId.
cname,cnameId都是对象Cname中的属性。就是专业课那张表的属性,knowl为知识点那个对象的一个属性。
而且formName="suibian" 也要跟表单的名字保持一致,不然也出不来。我按照这种方式实现了我的要求。
希望可以提供给需要的兄弟们一些启示,有高见的也请不吝赐教。
分享到:
相关推荐
所有的s标签介绍-C: <s:checkbox></s:checkbox>-----复选框 <s:checkboxlist list=""></s:checkboxlist>-----多选框 <s:combobox list=""></s:combobox>-----下拉框 <s:component></s:component>-----图像符号 D:...
struts2中doubleselect标签的具体应用实例,Hibernate、Struts2、Spring三框架整合
用struts2 doubleselect标签实现的二级联动下拉菜单
struts2 doubleselect标签的用法例子,功能是实现一个级联的下拉列表,一般书上的例子都用到了三目运算符,没有实际的使用价值。本例是一个完整的例子,已经调试运行正常。
5. <s:doubleselect list="" doubleName="" doubleList=""></s:doubleselect>-----双下拉框 E: 1. <s:if test=""></s:if> 2. <s:elseif test=""></s:elseif> 3. <s:else></s:else>-----这3个标签一起使用,...
Struts2的doubleselect标签演示,完整片断代码
doubleselect实现doubleselect实现doubleselect实现doubleselect实现doubleselect实现doubleselect实现doubleselect实现doubleselect实现doubleselect实现doubleselect实现doubleselect实现doubleselect实现...
struts2 标签动态数据用法, 在实际应用中,list往往是action返回的一个List,listKey和listValue来显示第一级下拉框,doubleList往往是一个Map, List<DataObject>>,其中Map中的Key值是第一级下拉框的listKey。
从数据库中读取数据,hibernate,struts2,spring三框架整合
doubleselect标签:生成一个相互关联的列表框,该标签由两个下拉选择框组成。 datetimepicker标签:生成一个日期、时间下拉列表框。 head标签:生成HTML页面的HEAD部分。 file标签:在页面上生成一个上传文件元素...
J2EE中使用struts2实现的select和doubleselect标签
doubleselect. \
doubleselect.doc
struts2 doubleselect 实例
不过,Struts 2.0加了几个我们经常在项目中用到的控件如:datepicker、doubleselect、timepicker、optiontransferselect等。因为这些标志很多都经常用到,而且参数也很多,要在一篇文章详细说明并非易事。 下面主要...
DoubleSelect11.vue
网络上找了很多Struts2级联doubleselect的实例,都没又找到可以直接的使用的源代码,给大家分享一下,可直接导入进行测试
两级级联下拉列表jquery插件doubleSelect.zip
JSP_struts2标签大全 1.a 3 2.action 3 3. actionerror 4 4. actionmessage 5 5. append 5 6. bean 7 7.checkbox 7 8.checkboxlist 8 9. combobox 9 10. conponent 9 11. date 11 12. datetimepicker 12 13. debug ...