你不能,因为@RequestParam
只是表明,one方法的参数应该绑定到oneWeb 请求的参数。它无法映射到对象。用来@RequestParam
你应该改变ajax请求:
var restDTO{
id: 3,
name: "hello"
}
$.ajax({
url: url,
type: 'POST',
data: restDTO,
success: function(data){
....
}
});
JQuery 将发送请求为application/x-www-form-urlencoded
并自动将数据处理为参数。您控制器的方法应如下所示:
@RequestMapping("/url")
public String content(@RequestParam Long id, @RequestParam String name){...}
要自动将参数映射到对象,您可以使用@ModelAttribute
注解:
@RequestMapping("/url")
public String content(@ModelAttribute RestDTO restDTO){...}
在这种情况下,javascript 映射中的名称应与中的属性名称匹配RestDTO
.
一般来说,@ModelAttribute
and @RequestBody
创建的目的相同:用于将请求中的数据绑定到方法(无论是原始类型的对象)。
我认为,那@ModelAttribute
当您使用 html 表单和普通对象时,会更方便。已经准备好使用 Spring 功能,例如modelAttribute
and path
.
轮到时,@RequestBody
当您需要手动控制数据时更加灵活。此外,当您处理复杂的对象时,它会更方便。
我个人更喜欢@RequestBody
和 json。