您的列表变成字符串 “[[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
但检查支柱文档。
我不确定你在这里做什么?你让用户编辑/修改你的列表?或者你想简单地发回你正在显示的内容?作为你想要做的事情,你能更具描述性吗? – 2013-09-18 06:00:39