隐藏 class 在 spring webflow 中创建逗号

Hidden class creates commas in spring webflow

我正在使用 spring webflow 显示项目列表。 每个项目都有一个编辑按钮;单击该按钮会打开一个模式对话框。 如果列表中有 12 个项目, 我看到在表单路径中生成了 12 个逗号。 如何避免生成逗号?

<c:forEach var="note" items="${model.modelname}">
//create a click button for each item
//each click opens up a modal

    <div id="modal" class="hidden">
        <div class="modal-body-content">
            <form:textarea path="textPath" />
        </div>
    </div>  

</c:forEach>

似乎在一个表单中,您有多个 textarea 字段,它们具有完全相同的字段名称 ("textPath")(以及完全相同的 DOM ID,这不是也不错)。

如果是这样,我并不感到惊讶 Spring 将所有提交的值合并到该单一名称下,并用逗号分隔它们。您的模型 bean 的 textPath 字段是什么 Java 类型?我想如果它是一个数组或者 List,你可能会把值分开。但这只是猜测。

工作中有几个问题。 正如@dbreaux 所指出的, 您所有的 textarea 元素都采用相同的形式并具有相同的 id; 当您 post 表单时,这是导致逗号的原因。

  1. 每个元素的元素 ID 应该是唯一的。您的元素 ID 是 "modal" 不是唯一的。让它独一无二。这不会导致逗号。
  2. 每个文本区域的名称都是textPath。由于您有多个元素同一个名称,因此当您 post 表单时,您会得到该元素名称的逗号分隔值列表。每个文本区域必须有一个唯一的名称。似乎每个模式都有一个唯一的名称(循环变量是 modalName)。在文本区域的名称中使用它。
  3. 如果您不能为每个文本区域指定唯一的名称,请为每个文本区域指定其自己的形式。为每个模态生成一个新表单 div.

这是我在上面#2 中提出的解决方案示例(注意:我没有使用 spring 标签 ATM 的系统 运行,此示例未经测试):

<c:forEach var="note" items="${model.modelname}">
    <div id="modal" class="hidden">
        <div class="modal-body-content">
            <form:textarea path="${note}textPath" />
        </div>
    </div>  
</c:forEach>