解決get請求入參@NotNull驗證不生效問題
get請求@NotNull驗證不生效
解決辦法
在該方法的controller類上加@Validated
驗證信息生效瞭
使用@NotEmpty,@NotBlank,@NotNull及@Valid註解校驗請求參數
@NotEmpty,@NotBlank,@NotNull 這些註解所在的jar包路徑在javax.validation.constraints 的包下面,這個包下面也封裝瞭其他的註解
這裡列舉一下常用的註解
並做簡單介紹,其餘還要在使用的時候慢慢挖掘
//被註釋的元素必須為null @Null //被註釋的元素不能為null @NotNull //被註釋的元素必須為true @AssertTrue //被註釋的元素必須為false @AssertFalse //被註釋的元素必須是一個數字,其值必須大於等於指定的最小值 @Min(value) //被註釋的元素必須是一個數字,其值必須小於等於指定的最大值 @Max(value) //被註釋的元素必須是一個數字,其值必須大於等於指定的最小值 @DecimalMin(value) //被註釋的元素必須是一個數字,其值必須小於等於指定的最大值 @DecimalMax(value) //被註釋的元素的大小必須在指定的范圍內。 @Size(max,min) //被註釋的元素必須是一個數字,其值必須在可接受的范圍內 @Digits(integer,fraction) //被註釋的元素必須是一個過去的日期 @Past //被註釋的元素必須是一個將來的日期 @Future //被註釋的元素必須符合指定的正則表達式。 @Pattern(value) //被註釋的元素必須是電子郵件地址 @Email //被註釋的字符串的大小必須在指定的范圍內 @Length //被註釋的字符串必須非空 @NotEmpty //被註釋的元素必須在合適的范圍內 @Range
這些註解用於加在java的實體類屬性字段上,在進行請求或請求的時候會根據字段的註解進行對應的校驗,簡化校驗相關的代碼。
當校驗不同過時,會返回對應的message描述
在前端請求解析到 controller 的時候,可使用 @valid 註解,開啟校驗,以下為使用的示例:
@PostMapping("/get/user/course") public UserCourseInfo getUserCourseInfo(@Valid @RequestBody CreateUserRequest request) { return userService.getUserCourseInfo(request); }
CreateUserRequest 實體類並添加校驗註解
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.apache.commons.lang.StringUtils; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.Email; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; /** * <h1>創建用戶請求對象定義</h1> * Created by Qinyi. */ @Data @NoArgsConstructor @AllArgsConstructor public class CreateUserRequest { /** 用戶名 */ @NotNull(message = "不可為空") @Length(min=20,max=30,message = "長度在20到30") private String username; /** 郵箱 */ @Email @NotBlank private String email; }
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- 如何解決@NotBlank不生效的問題
- springmvc項目使用@Valid+BindingResult遇到的問題
- springboot表單提交之validator校驗
- SpringBoot集成Validation參數校驗
- 參數校驗Spring的@Valid註解用法解析