我正在开发一个项目,我必须以List
的形式将数据从JSP页面发送到action类,我在第一次从JSP页面映射时从动作类设置List<Object>
当我为保存细节而采取行动时,我会得到List<Object>
的值,就像每个值的笛卡尔积一样。
e.g。如果有3个对象列表(有4个成员字段)传递给JSP,则返回操作时会生成12个具有不同JSP值的对象。
图像显示演示UI,它不是表格,但每行代表列表的对象
在动作类
List<Pojo> PojoList = new ArrayList<Pojo>();
任何人都可以建议我应该使用什么方法,这对我来说是新的方案,我也尝试过一些来自互联网的例子但是没有成功,我也在JSP中迭代列表但是它给了我一个错误。(不完全是错误但它没有给JSP上的字段;
在JSP中:
<c:forEach var="pojo" items="${pojoList}">
<s:textarea name="pojo.field1">
<s:textarea name="pojo.field2">
<s:textarea name="pojo.field3">
<s:textarea name="pojo.field4">
</c:forEach>
返回动作类方法(打印12个对象)
try {
System.out.println("List : "+pojoList);
for (Iterator<Pojo> iterator = pojoList.iterator(); iterator.hasNext();) {
Pojo pojo = (Pojo) iterator.next();
System.out.println("\n MB : "+pojo);
}
} catch (Exception e) {
e.printStackTrace();
}
请建议我哪里出错了。
答案 0 :(得分:1)
如果列表中有3个pojos,那么默认情况下每个都有4个字段添加到列表中,因此3 * 4 = 12.代码工作正常,但是如果你改变它就像
<s:iterator value="pojoList" status="stat">
<s:textarea name="pojoList[%{#stat.index}].field1">
<s:textarea name="pojoList[%{#stat.index}].field2">
<s:textarea name="pojoList[%{#stat.index}].field3">
<s:textarea name="pojoList[%{#stat.index}].field4">
</s:iterator>
它将为每个字段使用相同的索引,因此将创建/更新3个pojos。