Struts2几个常用标签的主要属性及示例(二)
doubleselect标签生成上下两个select控件,上面的控件选择的option会导致下面select控件的options发生变化。
?
Attributes
Description
name
对应action中的变量名称,生成的parent select的name属性
doubleName
Required,对应action中变量的名称,生成的child select的name属性
list
Required,生成的parent select元素显示的可选列表,参照combobox的list属性
doubleList
Required,生成的child select元素显示的可选列表,相当于child select标签的list属性
listKey
生成的parent select 的option元素的value属性
listValue
生成的parent select的option元素的显示内容
doubleListKey
Child select的选项的value属性
doubleListValue
Child select的option元素显示的内容
headerKey
设置parent select的第一个选项的值
headerValue
设置parent select第一个选项的显示内容
?
Jsp code:
<s:doubleselect name="hobbyName" list="#session.hobbyList" listKey="hobbyId" listValue="hobbyName" headerKey="-1" headerValue="Please Select" doubleName="hobbyClass" doubleList="top.courses" />
?
Page source code:
<select name="hobbyName" id="testTags_hobbyName" onchange="testTags_hobbyNameRedirect(this.options.selectedIndex)">
??? <option value="1">Football</option>
??? <option value="2">Basketball</option>
?
?
</select>
<br />
<select name="hobbyClass" id="testTags_hobbyClass">
</select>
<script type="text/javascript">
......
......
function testTags_hobbyNameRedirect(x) {
//这里是由标签生成的js代码,来触发child select的选项更新
}
</script>
?
Prepare action:
Parent select显示的内容一般是从db中取得,假设Hobby类里有个属性为courses,类型为List<String>,生成的child select就绑定到这个list上,下面是准备数据:
List<String> courses_1 = new ArrayList<String>();
??????? courses_1.add("Sunday Class");
??????? courses_1.add("Monday Class");
??????? courses_1.add("Saturday Class");
???????
??????? List<String> courses_2 = new ArrayList<String>();
??????? courses_2.add("Wednesday Class");
??????? courses_2.add("Friday Class");
??????? courses_2.add("Monday Class");
??????? courses_2.add("Saturday Class");
??????? courses_2.add("Sunday Class");
?
??????? hobby_1.setCourses(courses_1);
??????? hobby_2.setCourses(courses_2);
?
??????? hobbyList.add(hobby_1);
??????? hobbyList.add(hobby_2); //this list load from database
?
??????? map.put("hobbyList", hobbyList);
??????? return SUCCESS; //return xxx.jsp
?
Action class:
private String hobbyName; ??? //with getter/setter method
Private String hobbyClass;?????? //with getter/setter method
?
Result:
在页面提交到Action后,hobbyName的值为parent select选中的选项值,hobbyClass的值为child select 选中的选项值。