注解@requestBody自动封装复杂对象 (成功,自己的例子封装的不是一个复杂对象,只是一个简单的User对象,将jsp页面的name转成json字符串,再用JSON.stringify()传参就行了)

注意:ajax向后台传值的时候,必须加上contentType:"application/json";

springmvc的注解@requestBody可以通过页面提交json来自动封装成bean对象,但是如果这样的怎么处理

public class User{
    private String id;
    private int age;
    private String name;
    private Class classInfo;
    //getter,setter
}
public class ClassInfo{
    private String id;
    private name;
    private User classMaster;
    private School school;
    @JsonIgnore
    private Set<User> teachers;
    //getter,setter
    
}
public class School{
    private String id;
    private String name;
    //getter,setter
}

我封装的json对象是

"classInfo":{
    "id":"xxxxx",
    "name":"一年级三班",
    //班主任
    "classMaster":{
        "id":"xxxx",
        "age":"92",
        "name":"班主任"
    },
    //学校
    "school":{
        "id":"xxx",
        "name":"旭日东升小学"
    },
    //教师集合
    "teachers":[
        {
             "id":"xxxx",
            "age":"92",
            "name":"语文老师"
        },
        {
             "id":"xxxx",
            "age":"92",
            "name":"数学老师"
        }
    ]
}

提交的时候data : JSON.stringify(classInfo)
这样的班级里面包含了班主任,教师集合,还有学校,后台是这样的

 
@requestMapping("xxxx")
@responseBody
public Map<String,Object> addClass(Model model, @requestBody ClassInfo classInfo){
    xxxx
}
原文地址:https://www.cnblogs.com/mark5/p/10955483.html