1

我在表单中有一个 optiontransferselect,但我不知道如何在我的操作中获取 rightlist 中的选定项目。

我需要获取所有访问过的国家/地区 ID 的列表。我尝试在我的操作列表(整数)国家访问 ID;但它返回 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 的列表?

4

3 回答 3

1

我把头撞在墙上,想知道我做错了什么。这很简单

doubleName="fields" 是返回的标签字段

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

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

于 2009-10-13T09:48:05.193 回答
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()"/>

第四步:在action中,让左右两边对象名的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());
于 2009-09-24T09:16:41.030 回答
0

在你的行动中:

 public void setCountriesVisitedId(String[] countriesVisitedId) {
    this.countriesVisitedId = countriesVisitedId;
 }
于 2009-04-21T15:33:51.353 回答