小编典典

如何在我的操作中从JSP获取更新的列表值?

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);

现在,当我改变的值countrycode,并countryname在JSP,我应该得到我的行动更新的值。但是我不能。有没有办法获取这些更新的值。


阅读 316

收藏
2020-06-08

共1个答案

小编典典

您需要在拦截器使用索引属性访问填充列表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>;
2020-06-08