在窗体中混合索引和未编制索引的列表元素



我有一个像这样的处理程序

@RequestMapping(...)
public String get(@RequestParam List<Cmd> rows) {...}

我使用 Spring 表单标签来生成输入。所以JSP代码

<c:forEach var="i" begin="0" end="${fn:length(rows)}" >
    <form:input path="rows[${i}].name" />
    ...
</c:forEach>

生成

<input name="rows[0].name" value="...' />

这一切都很好,但我也想允许用户动态添加行,所以需要编写模板input。但是,name="rows.name"name="rows[].name"都不起作用,所以我必须编写代码来生成索引,这很烦人。

我在这里错过了什么吗?有没有更好的方法可以做到这一点?

编辑:

顺便说一句,我尝试使用 Javascript 动态生成name="rows[n].name",但如果用户删除中间的一行,就会出现问题。重写所有索引的代码似乎是不合理的。

您可以使用 Javascript 插入新输入。春天产生以下

<input name="rows[0].name" value="...' />

现在您希望用户输入新值,那么您的Javascript代码应该生成以下行

<input name="rows[1].name" value="...' />

假设用户想要一个值,

<input name="rows[2].name" value="...' />

请记住在使用Javascript生成输入时处理索引。

试试这个,

<form:input path="${rows[i].name}" />

而不是

<form:input path="rows[${i}].name" />

最新更新