首頁>技術>

Jboot V3.7.5 增強 Jboot 的驗證方式,在 Jboot 之前的 @EmptyValidate、@RegexValidate 等基礎上,進一步基於 JSR 303 – Bean Validation 簡化了驗證方式,相比 Spring 更加優雅簡單。

@NotNull 驗證

在 Controller (或 Service 等)中,我們可以直接透過 @NotNull 註解給 Controller 新增,例如:

 public void test(@NotNull String para) {        renderText("test6");    }

可能你說,在引數中新增 @NotNull 在 Spring 也支援呀,但是如果使用 @Size 等驗證,Spring 是無法直接給引數新增的,比如:

 public void test(@Size(min=2,max=10) String para) {        renderText("test6");    }

這個要做要求前端傳入的 para 引數的長度必須是在 2 ~ 10 直接。

@Size 驗證

@Size 驗證,不僅僅可以驗證 String 資料的長度,也可以驗證 int long 等資料型別的值的大小範圍。比如:

 public void test(@Size(min=2,max=10) int value) {        renderText("test6");    }

這個要求 value 的值必須在 2 ~ 10 直接。

當然,我們還可以使用 @Size 來驗證 Map/List/陣列的長度,比如配合 @JsonBody 來接收前端傳入的值:

public void list(@Size(min=2,max=10) @JsonBody() List<MyBean> list) {              System.out.println("list--->" + list);              renderText("ok");  }

要求前度傳入的 MyBean Json 陣列的長度必須是在 2~10 之間。

@NotEmpty 驗證

@NotEmpty 不僅僅可以驗證 String 型別不能為 null 和 空字串,也可以驗證 Map、List、陣列等不能為空,比如:

public void list(@NotEmpty() @JsonBody() List<MyBean> list) {              System.out.println("list--->" + list);              renderText("ok");  }

要求前端摻入的 MyBean Json 陣列必須有值。

@Valid 驗證

@Valid 是針對整個 Java Bean 驗證,也可以對 JFinal 的 Model 進行驗證。的 MyBean Json 數

比如 MyBean 定義如下:

public class MyBean {    private String id;       @NotBlank(message = "密碼不能為空")    private String password;    @Size(min=0,max=2,message = "性別的值只能是 0 1 2")    private int sex;    @Min(value = 18,message = "未成年禁止入內")      private Integer age; }

在 Controller 或者 Service 中,如下程式碼可以直接對 MyBean 進行驗證:

 public void test(@Valid() MyBean bean) {        renderText("test6");    }

如果 MyBean 是一個 JFinal 的 Model,我們只需要在 getter 方法添加註解即可。

除了以上的基本示例以外,Jboot 的驗證還支援了更多的驗證:

註解說明@NotNull限制必須不為null@DecimalMax(value)限制必須為一個不大於指定值的數字@DecimalMin(value)限制必須為一個不小於指定值的數字@Digits(integer,fraction)限制必須為一個小數,且整數部分的位數不能超過integer,小數部分的位數不能超過fraction@Max(value)限制必須為一個不大於指定值的數字@Min(value)限制必須為一個不小於指定值的數字@Pattern(value)限制必須符合指定的正則表示式@Size(max,min)限制字元長度必須在min到max之間@NotEmpty驗證註解的元素值不為null且不為空(字串長度不為0、集合大小不為0)@NotBlank驗證註解的元素值不為空(不為null、去除首位空格後長度為0),不同於@NotEmpty,@NotBlank只應用於字串且在比較時會去除字串的空格@Email驗證註解的元素值是Email,也可以透過正則表示式和flag指定自定義的email格式

在使用在寫驗證註解中,我們不僅僅在 Controller 裡進行對 http 請求資料進行驗證,一樣可以在 Service (provider)中對傳入的引數進行驗證。

在前端中,如果出現驗證失敗,會返回如下的 Json 內容(可以透過配置 ErrorRender 來修改掉如下的內容):

{    "throwable": "io.jboot.components.valid.ValidException: 必須小於或等於200",    "errorMessage": "age max value is 200, but current value is 1001 at method: io.jboot.test.validate.ValidateController.test17(int)",    "errorCode": 400,    "state": "fail",    "message": "必須小於或等於200"}

在 Service 中驗證失敗會向外丟擲 ValidException 異常。

開發文件:https://jbootprojects.gitee.io/docs/

23
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Next.js+React聊天室|next.js桌面端聊天