java - Spring /JSTL : How to iterate over a map and bind input fields to the values?

标签 java spring jstl spring-webflow

<分区>

所以我的命令对象有一个 public Map<ProductVO, String> availableProducts;它将网站的各种产品/服务作为键,用户希望购买的数量作为值。当然提供了普通的 getter/setter。

此映射已实例化(作为 HashMap)并在设置步骤中使用我们数据库中的所有产品进行填充,所有值最初都设置为“0”。

然后在 jsp 中我有一个表来显示每行中的每个产品,每行包含 product.description、product.price,然后是一个输入字段,用户可以在其中输入他们想要多少该产品或直接离开它为零(不用担心非数字验证,会在其他地方处理)。

我的 JSTL foreach 看起来像这样;

<c:forEach var="availableProductEntry" items="${credit.availableProducts}">
    <c:set var="product" value="${availableProductEntry.key}" />
    <tr>
        <td>${product.description}</td>
        <td>${product.price}"</td>
        <td><form:input path="${availableProductEntry.value}" /></td>
    </tr>
</c:forEach>

这对于显示来说效果很好,即表格完全按照我想要的方式显示,所有产品都被迭代和显示,描述、价格和字段的初始值都是正确的。

然而,在字段中输入一些数字并点击提交后,我检查了命令对象,它看起来不像 map 值已更新,它们仍然是“0”。

我可能得到了 path="${availableProductEntry.value}"部分错误。

有没有办法让动态生成的输入字段更新他们最初从中提取值的 Map 的值?

最佳答案

你实际上需要使用这个:

<form:input path="availableProducts[${product}]" />

当然,如果您的命令对象是“信用”,这听起来像是来自您的帖子

关于java - Spring /JSTL : How to iterate over a map and bind input fields to the values?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12952544/

相关文章:

Java GUI Netbeans,在另一个包中的类的文本区域中显示输出

java - 在 EDT 中使用 OSGi EventAdmin 是否安全?

java - Spring Data 自定义实现 : Entity Not Managed

java - AspectJ、SpringAOP、Aspect 运行两次

Java时间测量不正确

java - GWT 1.7 - 在 Jetty 中配置数据源(托管模式)

java - 为什么当我添加 "RunWith"注释时 Spring Autowire 停止工作?

java - jSTL 可以检查属性是否已添加到模型中吗?

java - html :text tag not working

javascript - 动态制作的下拉列表,当选择任何列表时,我如何在每个下拉列表上使用事件类