2013-10-03 60 views
1

我有一個JSP在其中我遍歷列表並創建一個可編輯的表。如何在我的操作中從JSP獲取更新的列表值?

<s:iterator value="test" id="countryList"> 
    <tr> 
    <td><s:textfield name="countryCode" value="%{countryCode}" theme="simple" /></td> 
    <td><s:textfield name="countryName" value="%{countryName}" theme="simple" /></td> 
    </tr> 
</s:iterator> 

我的列表:

List<Country> test = new ArrayList<Country>(); 

國家類:

public class Country { 
    private String countryCode; 
    private String countryName; 


and the getter setters...... 

,說我填充列表,如:

Country country = new Country(); 
Country country1 = new Country(); 

country.setCountryCode("1"); 
country.setCountryName("India"); 

country1.setCountryCode("2"); 
country1.setCountryName("US"); 

test.add(country); 
test.add(country1); 

現在,當我在JSP中更改countrycodecountryname的值時,我應該在我的操作中獲取更新的值。但我不能。有什麼辦法來獲得這些更新的值。

+0

確實使用%{variableName}? –

+0

是的...它支持OGNL表達式 – DDas

+0

所以不應該是$ {variableName} –

回答

2

您需要Countryparams攔截器使用索引屬性訪問來填充您的列表時創建對象。

<s:iterator value="test" id="countryList" status="stat"> 
    <tr> 
    <td><s:textfield name="countryList[%{#stat.index}].countryCode" value="%{countryCode}" theme="simple" /></td> 
    <td><s:textfield name="countryList[%{#stat.index}].countryName" value="%{countryName}" theme="simple" /></td> 
    </tr> 
</s:iterator> 

要讓struts填充列表,您應該在xml配置中使用類型轉換註釋或等效項。

@Element(value = Country.class) 
@Key(value = String.class) 
@KeyProperty(value = "countryCode") 
@CreateIfNull(value = true) 
private List<Country> countryList = new ArrayList<Country>; 
+0

它的工作!!!謝謝羅馬人...非常感謝...保存了我的一天。學習是件好事 – DDas

+0

太棒了,現在你必須編碼來比較列表和更新值。但是您沒有保存previuos列表,如果您不介意在操作中硬編碼值,則需要再次提取它。最好將它放在會話中,因爲每次發出請求時都會重新創建動作。 –

+0

當然...會照顧到...再次感謝 – DDas

相關問題