解決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。

推薦閱讀: