@RequestParam 適用於Get請求且content-type為application/x-www-form-urlencoded
@RequestBody 適用於post請求且content-type為非application/x-www-form-urlencoded類型,一般為application/json
(1)入參為@RequestParam或@RequestBody時,不用加@valid和@validated;
(2)入參為@NotNull時要在方法上加@valid或@validated,或者在類上加@Validated(@valid不能作用於類上),這樣@NotNull才能起作用。
@Valid @GetMapping("/exam-info") public Boolean getInfo(@NotNull(message="examId不能為空")Long examId){......}
(3)當入參為實體對象時,需要在方法上加@Valid或@Validated或者在參數前加@Valid或@Validated,或者在類上加@Validated
@Valid @GetMapping("/exam-info") public Boolean getInfo(User user){......} @GetMapping("/exam-info") public Boolean getInfo(@Valid User user){......} @Validated @GetMapping("/exam-info") public Boolean getInfo(User user){......} @GetMapping("/exam-info") public Boolean getInfo(@Validated User user){......} public Class User{ @NotNull("id不能為空") private Integer id; . . . }
4.嵌套驗證
@valid作用於屬性上有嵌套驗證作用,@validated不能作用於屬性上,如下代碼在User類的屬性car上添加@valid注解,當傳參id為空時會報錯。
@GetMapping("/exam-info")
public Boolean getInfo(@Valid User user){.....}
@GetMapping("/exam-info")
public Boolean getInfo(@Validated User user){.....}
public class User{
@Valid
@NotNull("car不能為空")
private Car car;
........
}
public class Car{
@NotNull("id不能為空")
private Integer id;
........
}
https://blog.csdn.net/zhoubingzb/article/details/88311624
