我有一个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);
现在,当我改变的值countrycode,并countryname在JSP,我应该得到我的行动更新的值。但是我不能。有没有办法获取这些更新的值。
countrycode
countryname
您需要在拦截器使用索引属性访问填充列表Country时创建该对象params。
Country
params
<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>;