我有一个像这样的处理程序
@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" />