1.以前以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现,其实 @RequestBody接收的是一个Json对象的字符串。然而ajax请求默认传的都是Json对象,后来发现用 JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType: "json",contentType:"application/json" 这样就可以轻易的将一个对象或者List传到Java端,使用@RequestBody即可绑定对象或者List.
2、直接通过浏览器输入url时,@RequestBody获取不到json对象,需要用java编程或者基于ajax的方法请求,将Content-Type设置为application/json
不过现在各种前端框架(Vue..)对ajax封装的足够好了.可能不需要这么麻烦.
$.ajax({
url: "/sys/menu/list",
type: "post",
contentType: "application/json",
data: JSON.stringify(data.field),
async: false,
dataType: "json",
success: function (R) {
//layer.closeAll(2);
if (R.code === 0) {
Msg.success("操作成功");
$t.Refresh();
} else {
alert(R.msg);
}
=======================
@requestMapping("/login")
public void login(@requestBody String userName,@requestBody String pwd){
System.out.println(userName+" :"+pwd);}
这种情况是将JSON字符串中的两个变量的值分别赋予了两个字符串,但是呢假如我有一个User类,拥有如下字段:
class User{
String userName;
String pwd;}
那么上述参数可以改为以下形式:@requestBody User user 这种形式会将JSON字符串中的值赋予user中对应的属性上需要注意的是,JSON字符串中的key必须对应user中的属性名,否则是请求不过去的。