[英]Passing list of data from JSP to Set in Java
我使用Struts2框架。 在我的动作类中,我具有一个带有getter和setter的Set<Item>
属性:
private Set<Item> items;
public Set<Item> getItems()
{
return items;
}
public void setItems(Set<Item> items)
{
this.items = items;
}
在我的JSP上,我具有以下形式:
<form action='...'>
<input type="hidden" name="items.id" value="4592"/>
<input type="hidden" name="items.id" value="5016"/>
<input type="hidden" name="items.id" value="3227"/>
<input type="hidden" name="items.id" value="8549"/>
</form>
我希望该表单在提交给我的动作类时,将导致Set<Item>
与4个Item
对象一起创建,并且每个Item
的Id
属性都将设置为给定值。 但是,当我运行此命令时,集合为空(无元素)。
真正奇怪的是,我记录了此操作:
ACTIONCLASS-在动作类中获取项目集
ACTIONCLASS-设置动作类中的项目集
ACTIONCLASS-设置集合后,项目集为EMPTY
ITEMCLASS-现在创建一个新的ITEM对象
ITEMCLASS-将商品的ID设置为值:4592
ITEMCLASS-现在创建一个新的ITEM对象
ITEMCLASS-将商品ID设置为值:5016
ITEMCLASS-现在创建一个新的ITEM对象
ITEMCLASS-将商品的ID设置为值:3227
ITEMCLASS-现在创建一个新的ITEM对象
ITEMCLASS-将商品ID设置为值:8549
ACTIONCLASS-现在启动execute()方法
ACTIONCLASS-项目集为EMPTY
如您所见,将创建项目并设置其ID! 但不幸的是,并未添加到集合中。 为什么是这样?
为了使它按预期工作,我需要对以下行进行什么更改?
<input type="hidden" name="items.id" value="8549"/>
注意:如果我在动作类中将“ Set
为List
更改为该代码,则可以使用。 但是我真的很想使用Set
而不是List
。
名称需要使用括号,例如
<s:hidden name="items(%{#status.index}).id" value="8549"/>
假设它与迭代器一起使用。
与Set
属性一起使用的注释
@Element(value = Item.class)
@Key(value = Integer.class)
@KeyProperty(value = "id")
@CreateIfNull(value = true)
private Set<Item> items = new HashSet(0);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.