2009-03-27 14 views
1

私はフォームでoptiontransferselectを持っていますが、私は自分のアクションで正しいリストの選択項目を取得する方法を知りません。struts2 - optiontransferselect - 整数リストをアクションに渡す

私はすべての訪問国のIDを持つリストを取得する必要があります。私は私の行動List(Integer)countriesVisitedIdで試しました。 nullPointerExceptionを返します。私は整数のIDを試みたが、nullを返します。

これは私が持っているものです。

S:

   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" /> 

optiontransferselectどのように私は自分の行動で訪れた国の整数IDを持つリストを得ることができますか?あなたのアクションで

答えて

0

public void setCountriesVisitedId(String[] countriesVisitedId) { 
    this.countriesVisitedId = countriesVisitedId; 
} 
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:autoに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:アクションでは、左側と右側のオブジェクト名のゲッターとセッターが文字列ではなく、文字列の配列を取ります。

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

。それは非常に簡単です

doubleName =「フィールドは」

ます。public void setFields(文字列フィールド){これはあなたのアクションクラスであることを必要とするものであるが返されたタグフィールドです。

私が気付かなかったことは、要素を返送するために要素を選択する必要があることです。または、あなたのヘッダに単純なajaxを使用してください。

関連する問題