当提交表单时,只能在后台获得listKey的值,而" />

获取的listValue

系统 1724 0

在开发中我们常用到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 静态生成

 

  1. < s:select   name = "user.sex"   list = "#{'0':'男','1':'女'}"   label = "性别"   headerKey = ""   headerValue = "请选择性别" > </ s:select >  

 

 

注解:这里从页面来静态(也就是在页面中写死啦)构造下拉选项,关键点是list="#{'0':'男','1':'女'}" 通过它实现的select的两个option 。headerKey指定缺省的选项"key",headerValue指定缺省的选项"value"。

获取<s:select>的listValue

2.设置下拉框数据源

 

  1. <
  2.         java.util.HashMap   map  =   new  java.util.LinkedHashMap(); 
  3.         map.put(1, "aaa"); 
  4.         map.put(2, "bbb"); 
  5.         map.put(3, "ccc"); 
  6.         request.setAttribute("map", map); 
  7.         request.setAttribute("aa", "2"); 
  8. % >  

 

 

  1. < s:select   list = "#request.map"     label = "abc"   listKey = "key"   listValue = "value"   value = "#request.aa"   headerKey = "0"   headerValue = "aabb" >  
  2. </ s:select >  



 

 



 

 

value的值设置为了2,所以初始化下拉框时,会自动选择key值为2的选项

获取<s:select>的listValue

 

3.action传递list过来

 

  1. public   class  Program   implements  Serializable { 
  2.       /**    serialVersionUID */  
  3.       private   static   final   long  serialVersionUID = 1L; 
  4.       private   int  programid; 
  5.       private  String programName; 
  6.       public   int  getProgramid() { 
  7.           return  programid; 
  8.     } 
  9.       public   void  setProgramid( int  programid) { 
  10.           this .programid = programid; 
  11.     } 
  12.           public  String getProgramName() { 
  13.           return  programName; 
  14.     } 
  15.       public   void  setProgramName(String programName) { 
  16.           this .programName = programName; 
  17.     } 

 

action

  1. xxxAction   extends     extends  ActionSupport { 
  2.       private   List<Program> programs ; //list集合  
  3.          public  List<Program> getPrograms() { 
  4.           return  programs; 
  5.     } 
  6.       public   void  setPrograms(List<Program> programs) { 
  7.               this .programs = programs; 
  8.     } 

jsp页面

  1. < s:select   list = "programs "     listValue = "programName "   listKey = "programid "     name = "program"   id = "program"  
  2.              headerKey = "0l"   headerValue = ""   >  
  3. </ s:select >    


 

 

listKey说明下拉框的key值对应 programid字段,listValue说明下拉框的显示部分对应programName字段

获取 的listValue


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论