struts2的 action中得到<s:optiontransferselect/>标签中的内容

最近用到struts2 <s:optiontransferselect/>标签,要求在action中获取<s:optiontransferselect/>标签中的内容

出现这个问题后,发现确实很难实现,所以就Google了下,但获取答案却不理想

但研究struts2的demo后,发现他们可以正常获取的,所以就研究了下,发现问题其实很简单:

在此,借用下Google时,搜索到的一个问题

<s:form action="TestTagLib">
        <s:optiontransferselect
    label="optiontransferselect Test"
    labelposition="top"
    list="{'thomas1','ada','lothar'}"
    name="leftList"
    addToLeftLabel="向左移动"
    addToRightLabel="向右移动"
    addAllToLeftLabel="left"
    addAllToRightLabel="right"
    doubleName="rightList"
  doubleList="{'Expert One-on-One J2EE Design and Development', 'JavaScript: TDefinGuide'}" 
          />
      <s:submit  value="login"/> 
  </s:form> 
<s:form action="TestTagLib"> 
          <s:optiontransferselect  
 	    label="optiontransferselect Test" 
 	    labelposition="top" 
 	    list="{'thomas1','ada','lothar'}" 
 	    name="leftList" 
 	    addToLeftLabel="向左移动" 
 	    addToRightLabel="向右移动" 
 	    addAllToLeftLabel="left" 
 	    addAllToRightLabel="right" 
 	    doubleName="rightList" 
 	   doubleList="{'Expert One-on-One J2EE Design and Development', 'JavaScript: TDefinGuide'}"   
           /> 
        <s:submit  value="login"/>   
     </s:form> 
  
 然后提交到TestTagLibAction中,在action中设置了setter(),getter()方法,关键代码如下: 
  
 private List leftList; 
 private List rightList; 
  
 	public List getLeftList() { 
 		return leftList; 
 	} 
  
 	public void setLeftList(List leftList) { 
 		this.leftList = leftList; 
 	} 
  
 	public List getRightList() { 
 		return rightList; 
 	} 
  
 	public void setRightList(List rightList) { 
 		this.rightList = rightList; 
 	} 
  
 为什么在execute()方法中得不到 rightList的值? 其中rightList对应前面jsp页面中 <s:optiontransferselect/>的doublename="rightList"标签,代码如下: 
  
                  List list1=getRightList(); 
 		for(int i=0;i <list1.size();i++){ 
 			System.out.println(list1.get(i).toString()); 
 		} 

 借用下此问题的回答:

后台action里面添加属性(setXXX和getXXX方法):
private String[] leftList;
private String[] rightList;

在前台页面上,当提交表单时,onclick事件调用下面的js:
<script type="text/javascript">
  function myself(){
  var right=document.forms[0].rightList;
  for(i=1; i <right.length; i++)
    right[i].selected = true;
  }
</script>
提交后,就能在后台得到rightList里面的值了。
如果没有这段Js代码,后台是得不到值的,这是Struts2 <s:optiontransferselect/>本身的bug. 

 呵呵,首先感谢这位兄弟的回答,这样做应该是可以的(ps:我没有测试)

但这不是struts2的bug

问题出在html中的代码上

用firebug监控表单的提交的时候,会获取到一个dojo错误,其实问题很简单:

缺失

<s:head/>
 

 这个标签

因在struts2中集成了dojo,所以不导入dojo肯定会出现问题了

呵呵,就这么简单.

非常感谢上面引述的那位兄弟的回答

 

以上问题的来源地:http://topic.csdn.net/u/20080127/15/4539cf2e-7309-4de8-9289-fa0fe02496b5.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值