使用 JSP 页面映射列表并在 Action 类中获取值。它在 Action 类中将结果列表作为笛卡尔积提供
Posted
技术标签:
【中文标题】使用 JSP 页面映射列表并在 Action 类中获取值。它在 Action 类中将结果列表作为笛卡尔积提供【英文标题】:Mapping a list with JSP page and getting values in Action class. It gives the result list as a cartesian product in Action class 【发布时间】:2014-12-10 12:19:40 【问题描述】:我正在做一个项目,我必须以List
的形式将数据从 JSP 页面发送到动作类,当我第一次映射到 JSP 页面时,我正在从动作类设置 List<Object>
执行保存详细信息的操作,在操作中,我得到 List<Object>
的值,就像每个值的笛卡尔积一样。
例如如果有 3 个对象的列表(具有 4 个成员字段)传递给 JSP,则在返回操作时,它会生成 12 个具有不同 JSP 值的对象。
Image展示的是Demo UI,不是表格,而是每一行代表一个list的对象在action类中
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>
Return In Action Class 方法(打印 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();
请建议我出了什么问题。
【问题讨论】:
【参考方案1】:如果列表中有 3 个 pojo,则默认情况下每个都有 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 个 pojo。
【讨论】:
我这样做了,但它返回一个列表为空, 这是因为您缺少 bean 的 getter 和 setter。 嗨 Roman,我已经为字段和列表对象创建了 getter & setter 那么你应该配置动作以包含params
拦截器。
嗨 Roman,我的问题是我必须将 List以上是关于使用 JSP 页面映射列表并在 Action 类中获取值。它在 Action 类中将结果列表作为笛卡尔积提供的主要内容,如果未能解决你的问题,请参考以下文章
struts2客户端与服务器端即jsp页面与action之间的关系
在jsp页面怎样通过jstl标签调用java类中的方法?大虾们来救哈急哟。。。。