我理解您的意思是,在Spring MVC应用程序中,为了捕获/数据绑定HTTP请求的正文,可以使用@RequestBody,对于以
application/json
编码的请求,是这样吗?@PostMapping(consumes = "application/json")
public String handleUpload( @RequestBody UploadCommand command ) {
// ...
}
@ModelAttribute
这个注解用于处理编码为x-www-form-urlencoded
或者multipart/form-data
的请求数据。
@PostMapping(consumes = "multipart/form-data")
public String handleUpload( @ModelAttribute UploadCommand command ) {
// ...
}
问题:
为什么Spring需要这两个不同的注解?
这些注解还有其他用途吗?
注意: 经过一番搜索,这个stackoverflow答案深入阐述了@ModelAttribute: @ModelAttribute注释,何时使用?
@ModelAttribute
的全部意义所在,可以是查询参数或表单参数。 - M. Deinum@ModelAttribute
对数据绑定没有任何作用。您可以删除此注释,但数据仍将被绑定。@ModelAttribute
只是检查标记的对象是否已经存在于模型中,如果不存在则创建一个新的对象。 - Ken Bekov@RequestBody
使用了messageConverter
,而@ModelAttribute
没有。 - akuma8