Spring将@RequestBody绑定到其他数据类型

时间:2017-02-17 04:53:56

标签: java spring

将JSON RequestBody绑定到POJO是很常见的,如下所示:

@RequestMapping(value="/users", headers="Accept=application/json",method=RequestMethod.POST)
public void create(@RequestBody CustomerInfo customerInfo){
...
}

是否可以让@RequestBody绑定到非POJO,但是其他数据类型如原始数据类型和非原始数据类型?

E.G:

@RequestMapping(value="/users", headers="Accept=application/json",method=RequestMethod.POST)
public void create(@RequestBody Set<Integer> ids){
...
}

2 个答案:

答案 0 :(得分:2)

是的,这是可能的。

根据你的例子,

public void create(@RequestBody Set<Integer> ids){
    ...
}

它会收到像[1,2,3]这样的请求正文。

对于原语的另一个例子,

public void create(@RequestBody int id) {
    ...
}

它会收到像1这样的请求正文。

但是,对于后一个例子,我不会说它是application/json

答案 1 :(得分:1)

每篇文档:

https://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-requestbody

您可以使用Java Object作为@RequestBody的类型参数。这就是说我不认为有原始人的支持。

每个文档都有这个选项:

  

RequestMappingHandlerAdapter支持@RequestBody注释   使用以下默认HttpMessageConverters:

     
      
  • ByteArrayHttpMessageConverter转换字节数组。
  •   
  • StringHttpMessageConverter转换字符串。
  •   
  • FormHttpMessageConverter   将表单数据转换为MultiValueMap。
  •   
  • SourceHttpMessageConverter转换为/来自   javax.xml.transform.Source。
  •