3

再会。我在客户端有一个表格。在那种形式中,我得到了很多行。每行包含 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();

}

有可能吗?我该怎么做?

4

3 回答 3

11

您必须在客户端/html 上使用索引。

<input name="arrData[0].id" />
<input name="arrData[0].amount" />
<input name="arrData[0].date" />

每次添加行时,都必须增加索引。除非您不删除一行,否则它将像这样工作。

我想您允许您的客户删除行,因此这不可避免地会在索引之间产生间隙。但是您不必在客户端解决此问题,在模型到达控制器后,您可以过滤您的 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();

}
于 2013-04-30T09:57:23.123 回答
1

是的,这是可能的。

在 html中,您可以使用索引:

<input id='arrData[0].id' ...

这样您就可以在客户端动态构建绑定

在服务器端,您需要注释变量:

public ModelAndView getList(HttpServletRequest req, 
                            @RequestParam FormStruct formStruct)
于 2013-04-30T09:21:45.330 回答
0

您可以要求客户端以JSON 形式发送数据,您可以使用JSON De/Serializer将其转换Java对象

于 2013-04-30T09:07:32.267 回答