struts2 - optiontransferselect - 将整数列表传递给操作

时间:2009-03-27 12:18:12

标签: struts2

我在表单中有一个optiontransferselect但我不知道如何在我的行动中将所选项目放回到正确的列表中。

我需要获取所有访问过的国家/地区ID的列表。我尝试在我的行动List(整数)countriesVisitedId;但它返回nullPointerException。然后我尝试了Integer id,但它返回null。

这就是我所拥有的:

s:optiontransferselect

              label="Select visited countries"
              name="countriesNotVisitedId"
              leftTitle="Not visited countries"
              rightTitle="Visited Countries"
              list="%{countriesNotVisited}"
              listKey="id"
              listValue="name"
              headerKey="countryNotVisitedId"
              headerValue="--- Please Select ---"

              doubleName="countriesVisitedId"
              doubleList="%{countriesVisited}"
              doubleHeaderKey="countryVisitedId"
              doubleHeaderValue="--- Please Select ---"
              doubleListKey="id"
              doubleListValue="name" />

如何在行动中获取所访问国家/地区的整数ID列表?

3 个答案:

答案 0 :(得分:1)

这是我尝试的,它运作正常。

步骤1:JSP从左侧选择国家到右手。

<s:optiontransferselect 
 label="Favourite Characters"
 name="leftSide"
 id="left"
 leftTitle="Left Title"
 rightTitle="Right Title"
 list="%{countriesNotVisited)"
 multiple="true"
 headerKey="headerKey"     
 doubleList="{}"
 doubleId="right"
 doubleName="rightSide"
 doubleHeaderKey="doubleHeaderKey"
 doubleMultiple="true" /> 

第2步:Javascript代码自动选择右侧的所有数据。

 function selectall()
 {
 var list = document.getElementById("right");
 for (var i = 0; i < list.options.length; i++) 
   {
    alert(list.options[i].value)
    list.options[i].selected = true;
   }
 var form = document.getElementById("right");
 form.submit();
      return true;

}

步骤3:从JSP端调用此函数提交。

<s:submit id="submitid" value="Submit" action="insert" onclick="selectall()"/>

步骤4:在操作中,使左侧和右侧的对象名称的getter和setter采用字符串而不是字符串数组。

private String leftSide;
private String rightSide;

public String getLeftSide() {
    return leftSide;
}

public String getRightSide() {
    return rightSide;
}

public void setRightSide(String rightSide) {
    this.rightSide = rightSide;
}

public void setLeftSide(String leftSide) {
    this.leftSide = leftSide;
}

现在,如果您尝试在操作中打印值,您将获得值:

System.out.println("right side list " + ad.getRightSide());

答案 1 :(得分:1)

我正在墙上敲我的脑袋,想知道我做错了什么。这很简单

doubleName =“fields”是返回的标记字段

public void setFields(String fields){这是您的动作类中需要的内容。

我没有意识到的是需要选择元素才能被发回。或者简单地在标题中使用ajax

答案 2 :(得分:0)

在你的行动中:

 public void setCountriesVisitedId(String[] countriesVisitedId) {
    this.countriesVisitedId = countriesVisitedId;
 }