在 Spring MVC 中,一次请求只能有一个请求体(RequestBody),因此无法直接使用多个 @RequestBody 注解来接收多个对象。否则会导致在接收过程中得到的对象值都是 null。
要解决这个问题,可以创建一个包含多个对象的新的 JavaBean 类,并将其作为请求体的类型。然后前端传递一个包含两个对象信息的 JSON 对象,后端再解析该对象并将其转换成对应的 JavaBean 对象。
例如,假设你创建了一个名为School的 JavaBean 类,其中包含了 Teacher
和 Student
两个对象:
public class School{
private Teacher teacher;
private Student student;
// 省略 getter 和 setter 方法
}
然后在Controller 中,将接收的参数改为 School类型:
@RestController
public class MyController {
@PostMapping("/update")
public CommonResult<Long> ReceptTwoObject(@Valid @RequestBody School school) {
Teacher teacher= school.getTeacher();
Student student = school.getStudent();
// 处理 updateReq 和 student 对象
// ...
}
}
在前端,你需要将两个对象的信息封装到一个 JSON 对象中,例如:
{
"teacher": {
"name": "Alice",
"age": 25
// 其他属性
},
"student": {
// student的属性
}
}