如何在春天将set对象绑定到控制器

时间:2014-02-10 23:25:50

标签: java spring

我正在尝试对控制器进行调用,但我期望的对象包含Set数据类型,我不确定帖子数据应该如何显示。

型号:

public class Notebook{
  private string name;
  private Set<Todo> todos;
}

public class Todo{
  private String name;
}

控制器

@RequestMapping(method = RequestMethod.POST)
    public void createNotebook(Notebook q){
    questionnaireService.saveOrUpdateNotebook(q);
}

目前我尝试发布如下例子:

curl --data "name=some notebook&todos[0].name=todo1&todos[1].name=todo2" http://localhost:8080/api/notebook

似乎不起作用。任何人都有使用套装的经验吗?

1 个答案:

答案 0 :(得分:1)

您应该使用Notebook q注释限定@RequestBody,以便可以将请求映射到Notebook类型的对象。有关Spring MVC doc中输入数据和转换器格式的更多信息:Mapping the request body with the @RequestBody annotation

我们以JSON格式从前端发送数据,并使用Jackson JSON将其转换为Java对象。如果你走这条路,你可以直接将todos声明为Set<String>,输入将是

{
    name: "some notebook",
    todos: ["todo1", "todo2"]
}