最近在项目中用到了一个需要联动的地方,我有很多个专业课。每个专业课有很多个知识点。现在我希望的是使用选择了一个专业课之后,对应的知识点在二级下拉框中也对应改变。这个实现如果使用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" 也要跟表单的名字保持一致,不然也出不来。我按照这种方式实现了我的要求。
希望可以提供给需要的兄弟们一些启示,有高见的也请不吝赐教。
分享到:
相关推荐
### Doubleselect标签概述 在Struts2中,`doubleselect`标签是一种非常实用的标签,主要用于创建两个级联选择框。这种标签允许用户在一个下拉列表中进行选择时,另一个相关的下拉列表会自动更新其选项。这对于处理...
2. `<s:doubleselect>`标签: `<s:doubleselect>`是Struts2提供的一个特殊标签,用于创建两个关联的下拉列表。当一个下拉列表的选择发生变化时,另一个下拉列表的选项会相应更新。这在处理一对多关系时非常有用,...
4. **JSP页面**:在JSP页面中,使用`<s:doubleselect>`标签来声明这两个下拉列表。标签的属性包括`list`、`listKey`、`listValue`、`name`等,它们分别用来指定数据源、键字段、值字段以及Action中的属性名。 ```...
### Struts2中doubleselect标签实现省市联动案例详解 #### 一、背景介绍 在Web应用开发中,经常需要处理一些具有层级关系的数据选择问题,比如中国的省市县选择。为了提高用户体验并简化开发过程,Struts2框架提供...
4. **OGNL表达式**:在JSP页面中,我们可以使用OGNL表达式来获取Action中的属性,如`<s:doubleselect>`标签中的`list`、`listKey`、`listValue`等属性,都需要通过OGNL来绑定Action中的数据。 5. **`doubleselect`...
在"struts2 doubleselect标签的用法例子"中,我们将探讨如何实现这个功能。首先,我们需要理解`doubleselect`标签的基本结构和属性。`doubleselect`标签通常包含两个部分:父级选择器和子级选择器,它们之间的关联...
* <s:doubleselect>:双下拉框 E: * <s:if>:条件判断 * <s:elseif>:条件判断 * <s:else>:条件判断 F: * <s:fielderror>:显示文件错误信息 * <s:file>:文件上传 * <s:form>:获取相应 form 的值 G: * ...
### Struts2中的DoubleSelect标签的用法 在Struts2框架中,`doubleSelect`标签是一种非常实用的工具,它允许用户在一个页面上通过两次选择来完成复杂的数据关联操作。这种标签尤其适用于多级菜单或者层级关系的选择...
doubleselect标签:生成一个相互关联的列表框,该标签由两个下拉选择框组成。 datetimepicker标签:生成一个日期、时间下拉列表框。 head标签:生成HTML页面的HEAD部分。 file标签:在页面上生成一个上传文件元素...
Struts2 Doubleselect标签是用于创建二级联动下拉列表的,这种控件在网页表单中常见于需要显示层次关系数据的场景,例如省份-城市的选择。Doubleselect标签结合了两个下拉列表,其中一个的选择会影响到另一个下拉...
12. `s:doubleselect` 标签:这是一个双列选择标签,允许用户在两个列表之间进行选择并交换元素。 除此之外,Struts 2还提供了许多其他标签,如`s:textfield`用于输入文本,`s:textarea`用于多行文本输入,`s:...
接下来,我们将详细介绍两个常见而又复杂的表单标签:`<s:checkboxlist/>` 和 `<s:doubleselect/>`。 #### `<s:checkboxlist/>` 标签详解 ##### 核心问题:默认选中某个复选框 开发者常常困惑于如何在 `<s:...
`<s:doubleselect>` 标签用于创建双列表选择框,允许用户从一个列表中选择项并移动到另一个列表。 ### 13. `<s:if>`, `<s:elseif>`, `<s:else>` 标签 这三个标签构成了Struts2中的条件语句,可以基于表达式的真假...
在上述示例的JSP代码中,`<s:doubleselect>`标签的`list`属性绑定到了`categoryList`,这应该是`Action`返回的`List<Dept>`,其中每个`Dept`对象包含部门ID(`id`)和部门名称(`deptName`)。`doubleList`则绑定到`...
5. `<s:doubleselect>`:创建双列选择框,允许用户从两个列表中选择值。 E部分: 1. `<s:if>`,`<s:elseif>`,`<s:else>`:条件判断语句,用于控制标签的渲染。 F部分: 1. `<s:fielderror>`:显示字段级别的错误...
S组标签: 1. `<s:select>`:创建单选下拉框。 2. `<s:set>`:设置变量,可以指定作用范围。 3. `<s:sort>`:对列表进行排序,可以指定比较器。 4. `<s:submit>`:提交按钮,用于提交表单数据。 5. `<s:subset>`:未...
5. `<s:doubleselect list="" doubleName="" doubleList=""></s:doubleselect>` - 双下拉框,用于双向选择关联数据。 E部分: 1. `<s:if test="">`、`<s:elseif test="">`、`<s:else>` - 条件判断标签,用于根据...
- `<s:doubleselect>`:创建两个关联的下拉框,常用于一对多关联的选择。 - `<s:optiontransferselect>`:创建两个独立的下拉框,支持元素的转移。 4. **表单元素**: - `<s:file>`:处理文件上传功能。 - `<s:...
**S组标签:** 1. `<s:select>` - 创建下拉选择框,可以绑定到Action的属性。 以上是Struts2中部分主要的标签及其用法,它们极大地简化了页面逻辑,使得开发更加高效。理解并熟练运用这些标签是掌握Struts2的关键。