我正在向我的Spring rest应用程序发布一个x-www-formurlencoded
字符串,它会自动将其转换为默认的MultiValueMap<String, Object>
对象并将其作为参数传递给它:
@RequestMapping(method = RequestMethod.POST,
consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.CREATED)
@ResponseBody
public User save(@Valid @RequestBody final MultiValueMap<String, Object>
userMultiValueMap) {
...
}
如何自定义我的默认处理程序,以便自动映射特定的域对象(例如说User
对象),并可以作为参数传入。这看起来就像使用以下简单application/json
帖子获得的自动绑定:
@RequestMapping(method = RequestMethod.POST,
consumes = MediaType.APPLICATION_JSON_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.CREATED)
@ResponseBody
public User save(@Valid @RequestBody final User user) {
...
}
User
对象是从application/json
请求正文帖子映射和创建的。如何配置HttpMessageConverter
处理以实现与x-www-formurlencoded
类似的操作并获取域对象,而不是MultiValueMap
中默认处理提供的FormHttpMessageConverter
。 / p>
答案 0 :(得分:-1)
你只需要将MappingJackson2HttpMessageConverter添加到转换器中,Spring应该可以自动执行你想要的操作。
你还需要在classpath上拥有jackson库,而你的User必须是一个java bean。
如果你想要表格数据而不是json你只需要FormHttpMessageConverter。同时从方法注释中删除consumes = ... json部分。