我有一个像
这样的处理程序@RequestMapping(...)
public String get(@RequestParam List<Cmd> rows) {...}
我使用Spring forms tags生成输入。所以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"
都不起作用,所以我必须编写代码来生成索引,这很烦人。
我在这里遗漏了什么吗?有没有更好的方法呢?
修改
BTW,我尝试使用Javascript动态生成name="rows[n].name"
,但如果用户删除中间的行,则会出现问题。重写所有索引的代码似乎是不合理的。
答案 0 :(得分:0)
试试这个,
<form:input path="${rows[i].name}" />
而不是
<form:input path="rows[${i}].name" />
答案 1 :(得分:0)
您可以使用Javascript插入新输入。 Spring生成以下
<input name="rows[0].name" value="...' />
现在您希望用户输入新值,然后您的Javascript代码应生成以下行
<input name="rows[1].name" value="...' />
并假设用户想要一个更多的值,
<input name="rows[2].name" value="...' />
请记住在使用Javascript生成输入时处理索引。