2009-10-23 25 views
1

在我的Struts 2的应用程序我循环VO的名单在我的jsp对象如下 -Struts2的:加入VO的对象列表中的动作类迭代列表中的JSP获取列表对象anothe动作类

<s:iterator value="listOfVoObjects"> 
<tr> 
<td><s:property value="itemId" /></td> 
<td><s:property value="itemName" /></td> 
</tr> 
</s:iterator> 

现在,我想在我的动作类来获得这种“listOfVoObjects”时,用户会点击一些按钮,说“冻结”而要做到这一点,我藏在同一个JSP页面等被定义它 -

<s:hidden name = “listOfVoObjects”/> 

,并得到它在行为类中作为使用setter-getter的列表对象。它运行,但通过添加双括号就像给列表 -

[[email protected][email protected][email protected]]

这就是为什么我在我的操作类中使用iterate()方法获取问题来迭代它的原因。

请帮忙删除这个双方括号。所需的输出是 -

[[email protected][email protected][email protected]]

还是让如果可能的话我知道其他的解决办法。

+0

我不确定你在这里做什么?你让用户编辑/修改你的列表?或者你想简单地发回你正在显示的内容?作为你想要做的事情,你能更具描述性吗? – 2013-09-18 06:00:39

回答

0

您的列表变成字符串 “[[email protected][email protected][email protected]]” 因为你BeforeSaveingReq4Originator没有一个toString方法,但并不是真正的问题。

该问题是一种类型转换。看起来好像这个列表在你的视图页面上是可编辑的,但是当你在使用GET/POST并且需要它通过页面时,你可能不能重新创建它。 Sooo ....你需要的第一件事就是创建BeforeSavingReq4OriginatorVO对象的转换器。

如果这些东西没有存储在任何地方,那么你将需要建立一个字符串,你可以稍后解析。大多数情况下,它的某些持久化实体可以输出id作为String表示形式,然后告诉Struts在需要objet表示形式时使用ID从数据库中加载它。有关如何执行此操作,请参阅Struts类型转换。

所以你得到一个类型转换器为你的类工作。现在收集。我不确定它会如何工作,只有一个字段具有集合的名称,然后尝试从集合的toString输出中重新构建它。也许一旦有一个类型转换器,你的字符串看起来像[1,4,5,6],它看到setter是一个集合,然后尝试从每个“字符串表示”创建VO对象。

如果不是那么我知道你可以遍历你的集合并为每个值创建隐藏的字段。

<s:iterator value="listOfValues" status="row"> 
    <s:hidden name="listOfVoObjects[${row.index}]" value="<s:property/>" 
</s:iterator> 

现在你知道如何创建你的集合,假设有一个类型转换器。如果没有类型转换器,那么你必须在HTML表单创建对象的整个结构:

<s:iterator value="listOfValues" status="row"> 
    <s:hidden name="listOfVoObjects[${row.index}].itemId" value="<s:property value="itemId"/>" 
    <s:hidden name="listOfVoObjects[${row.index}].itemName" value="<s:property value="itemName"/>" 
enter code here 
</s:iterator> 

还有根据您的Java版本的一些类型转换的影响。如果你可以使用泛型,而你的目标设置器是List setListOfVoObjects(...),那么Struts可以找出为每个条目创建的bean类型。如果不是,那么Struts文档中描述的集合和映射的类型转换设置。

在一个名为[actionName] -conversion.properties你的东西,如指定bean类型的文件:

Element_listOfVoObjects=originator.vo.BeforeSavingReq4OriginatorVO 

但检查支柱文档。

0

Here是一个工作示例(Netbeans 6.9项目),演示了如何遍历数组或对象列表。

此外,如何提交表单,以便在提交时重新创建对象列表。

只需解决参考并开始。