使用 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 从 action 类传递给 JSP,列表大小不固定,而且我必须让列表返回到 Action 类。 JSP 页面中的列表大小可能会增加,我不明白我必须做什么?由于我对struts2比较新鲜,所以我不知道该怎么做?请建议我使用什么步骤或方法?

以上是关于使用 JSP 页面映射列表并在 Action 类中获取值。它在 Action 类中将结果列表作为笛卡尔积提供的主要内容,如果未能解决你的问题,请参考以下文章

jsp中页面跳转form标签中的action属性怎么写?

struts2客户端与服务器端即jsp页面与action之间的关系

struts2 的action 怎么向页面传值?

在jsp页面怎样通过jstl标签调用java类中的方法?大虾们来救哈急哟。。。。

Strut2在Action-Result的配置文件内转到jsp页面时用URL传递参数

5.struts2中Action类中获取ServletAPI的三种方式