2013-04-30 73 views
2

美好的一天。 我在客户端获得了一个表格。在这种形式中,我得到了许多行。每行包含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(); 

} 

这是可能的吗?我该怎么做?

回答

10

,你必须在客户方/ 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(); 

} 
0

你可以要求客户在JSON方面发送数据,并且可以使用JSON De/Serializer转换的Java对象

+0

嘛。这是一个解决方案。我如何从我的表单创建一个JSON?这是一种方法来执行automaticcaly,只使用表单域名称,或者我需要获取我的表单的行并手动添加到我的JSON中? – user2160696 2013-04-30 09:11:56

+0

http://stackoverflow.com/questions/8164802/serialize-javascript-object-into-a-json-string应该帮助 – sanbhat 2013-04-30 09:14:38

+0

这是一个解决方案,但由于春季是能够绑定到集合,没有必要! – 2013-04-30 10:04:28

1

是的,这是可能的。

在HTML你可以使用索引:

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

这样你就可以动态地建立在客户端

在你需要注释的变量在服务器端的绑定:

public ModelAndView getList(HttpServletRequest req, 
          @RequestParam FormStruct formStruct)