在開發中我們常用到struts2的form表單組件,其中select最常用的寫法如下:
?????<s:select label="對象類型" name="emp.deptId" list="listValues" listKey="oid" listValue="name" headerKey="" headerValue="--請選擇--" ? ?onchange="changeHidenValue(this)"></s:select>
?????當提交表單時,只能在后臺獲得listKey的值,而無法提交listValue的值。
?????現有需求同時提交listKey和listValue,解決方法如下:
?????1、在select的onchange事件函數中,獲得option中的text,即listValue。
?????2、這時,寫回到表單的一個隱藏域中。
?????首先,在<s:select>標簽中添加 (onchange="changeHidenValue(this)")。然后在表單中添加隱藏域<input type=hidden id="deptName" name="emp.deptName" value=""/>。最后寫事件綁定函數,如下:
?????
?????function changeHidenValue(elem){
?????????var optionVal= ? $(elem).find("option:selected").text(); ? ?// 取到選中的listValue(Option)的值
?????????$("#deptName").val(optionVal);
?????}
?????點擊表單提交測試一下,結果正確!
?
?
?
================== struts2 s:select 標簽=============
1 靜態生成
?
- < s:select ? name = "user.sex" ? list = "#{'0':'男','1':'女'}" ? label = "性別" ? headerKey = "" ? headerValue = "請選擇性別" > </ s:select > ?
?
?
注解:這里從頁面來靜態(也就是在頁面中寫死啦)構造下拉選項,關鍵點是list="#{'0':'男','1':'女'}" 通過它實現的select的兩個option 。headerKey指定缺省的選項"key",headerValue指定缺省的選項"value"。
2.設置下拉框數據源
?
- < %?
- ??????? java.util.HashMap ? map ?= ? new ?java.util.LinkedHashMap();?
- ??????? map.put(1, "aaa");?
- ??????? map.put(2, "bbb");?
- ??????? map.put(3, "ccc");?
- ??????? request.setAttribute("map", map);?
- ??????? request.setAttribute("aa", "2");?
- % > ?
?
?
- < s:select ? list = "#request.map" ? ? label = "abc" ? listKey = "key" ? listValue = "value" ? value = "#request.aa" ? headerKey = "0" ? headerValue = "aabb" > ?
- </ s:select > ?
?
?
?
?
value的值設置為了2,所以初始化下拉框時,會自動選擇key值為2的選項
?
3.action傳遞list過來
?
- public ? class ?Program ? implements ?Serializable {?
- ??? ? /**??? serialVersionUID */ ?
- ??? ? private ? static ? final ? long ?serialVersionUID = 1L;?
- ??? ? private ? int ?programid;?
- ??? ? private ?String programName;?
- ??? ? public ? int ?getProgramid() {?
- ??????? ? return ?programid;?
- ??? }?
- ??? ? public ? void ?setProgramid( int ?programid) {?
- ??????? ? this .programid = programid;?
- ??? }?
- ??????? ? public ?String getProgramName() {?
- ??????? ? return ?programName;?
- ??? }?
- ??? ? public ? void ?setProgramName(String programName) {?
- ??????? ? this .programName = programName;?
- ??? }?
- }?
?
action
- xxxAction ? extends ? ? extends ?ActionSupport {?
- ??? ? private ? List<Program> programs ; //list集合 ?
- ?????? ? public ?List<Program> getPrograms() {?
- ??????? ? return ?programs;?
- ??? }?
- ??? ? public ? void ?setPrograms(List<Program> programs) {?
- ??????????? ? this .programs = programs;?
- ??? }?
- }?
jsp頁面
- < s:select ? list = "programs " ? ? listValue = "programName " ? listKey = "programid " ? ? name = "program" ? id = "program" ?
- ?????????? ? headerKey = "0l" ? headerValue = "" ? > ?
- </ s:select > ???
?
?
listKey說明下拉框的key值對應 programid字段,listValue說明下拉框的顯示部分對應programName字段
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
