美好的一天。 我在客户端得到了一个表格。在这种形式中我得到了很多行。每行包含 3 个字段(日期、ID 和金额)。客户端可以添加行(借助 JavaScript),因此服务器端不知道会有多少行。
我需要将此表单与表示此数据的类进行映射。
public class RowStruct
{
private Long id;
private Double amount;
private Date date;
}
public class FormStruct
{
private ArrayList<RowStruct> arrData;
{
所以我需要表单中的数据与 FormStruct 对象进行映射。
@RequestMapping("/send")
public ModelAndView getList(HttpServletRequest req,FormStruct formStruct)
{
ModelAndView model = new ModelAndView();
}
这可能吗?我该怎么做?
最佳答案
您必须在客户端/html 上使用索引。
<input name="arrData[0].id" />
<input name="arrData[0].amount" />
<input name="arrData[0].date" />
每次添加行时,都必须增加索引。 除非你不删除一行,否则它会像这样工作。
我想您允许客户删除行,因此这不可避免地会在索引之间造成间隙。但您不必在客户端修复此问题,在模型到达 Controller 后,您可以过滤 arrData 以获得 NULL 引用。
@RequestMapping("/send")
public ModelAndView getList(HttpServletRequest req,FormStruct formStruct)
{
Iterator<RowStruct> it = formStruct.getArrData().iterator();
while (it.hasNext()) {
if (it.next() == null)
it.remove();
}
ModelAndView model = new ModelAndView();
}
关于java - Spring 表单映射到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16295952/