如果前端是通过json传参,即Content-Type为application/json,后端接收要用@RequestBody
场景一
如果list集合是参数的一个属性,可以在该集合上面加@NotEmpty,接收参数的前面加@Validate注解。这种场景比较简单,一般没什么问题。
//后端接收代码
@RestController
@RequestMapping("/test")
public Class testController {
@PostMapping(value="/test")
public Result test(@Validate @RequestBody School school) {
}
}
//实体类
@Data
public Class School{
private String name;
@NotEmpty(message = "学生不能全为空")
private List<Student> students;
}
场景二
如果后端接收的参数是一个集合,如List<School> schools,在参数前面加@Validated,在实体类School里的students属性前面加@NotEmpty注解。此时@NotEmpty是不起作用的。
//后端接收代码
@RestController
@RequestMapping("/test")
public Class testController {
@PostMapping(value="/test")
public Result test(@Validated @RequestBody List<School> schools) {
}
}
//实体类
@Data
public Class School{
private String name;
@NotEmpty(message = "学生不能全为空")
private List<Student> students;
}
还需要在controller类上面加@Validated注解,参数前面加@Valid。
//后端接收代码
@RestController
@RequestMapping("/test")
@Validated
public Class testController {
@PostMapping(value="/test")
public Result test(@Valid @RequestBody List<School> schools) {
}
}
//实体类
@Data
public Class School{
private String name;
@NotEmpty(message = "学生不能全为空")
private List<Student> students;
}
场景三
如果list参数里面还有一个list集合属性,如school里有一个students属性,这是一个list集合,Student对象里有addresses属性,这也是一个集合。如果直接在addresses属性上面使用@NotEmpty注解,addresses的非空判断是不起作用的。
//后端接收代码
@RestController
@RequestMapping("/test")
public Class testController {
@PostMapping(value="/test")
public Result test(@Validate @RequestBody School school) {
}
}
//实体类
@Data
public Class School{
private String name;
@NotEmpty(message = "学生不能全为空")
private List<Student> students;
}
@Data
public Class Student{
private String name;
@NotEmpty(message = "地址不能全为空")
private List<String> addresses;
}
还需要在School的students上面加上@Valid注解。
//后端接收代码
@RestController
@RequestMapping("/test")
public Class testController {
@PostMapping(value="/test")
public Result test(@Validate @RequestBody School school) {
}
}
//实体类
@Data
public Class School{
private String name;
@NotEmpty(message = "学生不能全为空")
@Valid
private List<Student> students;
}
@Data
public Class Student{
private String name;
@NotEmpty(message = "地址不能全为空")
private List<String> addresses;
}
另外
如果不用@NotEmpty注解,可以用@Size(min = 1, message = "至少选择一个")注解。
但不能用@Min注解。@Min注解是判断数值的,而不是集合大小。