七 JSR303引數校驗和全域性異常處理

2021-09-24 15:39:54 字數 2447 閱讀 7832

系統需要登入時先做乙個引數校驗,有的方法同樣也需要做引數校驗,例如註冊。

為了大量**重複,這裡使用jsr303校驗

新增依賴

>

>

org.springframework.bootgroupid

>

>

spring-boot-starter-validationartifactid

>

dependency

>

登入功能中我們要驗證loginvo中兩個屬性

controller中在引數loginvo前加上標籤@valid (

在loginvo類中每乙個需要驗證的屬性上加註解,這裡自定義了乙個ismobile校驗器

public

class

loginvo

public

void

setmobile

(string mobile)

public string getpassword()

public

void

setpassword

(string password)

@override

public string tostring()

';}}

定義@ismobile註解

@target()

@retention

(retentionpolicy.runtime)

@documented

@constraint

( validatedby =

//系統看到@ismobile註解時呼叫的校驗器

)public @inte***ce

ismobile

; class<

?extends

payload

>

payload()

default

;}

定義具體的ismobilevalidator校驗器類來判斷格式問題

//需要extends constraintvalidator,string為校驗器校驗的字段型別

public

class

ismobilevalidator

implements

constraintvalidator

//判斷value是否合法

@override

public

boolean

isvalid

(string value, constraintvalidatorcontext constraintvalidatorcontext)

else

else}}

}

validatorutil類

public

class

validatorutil")

;public

static

boolean

ismobile

(string src)

matcher m = mobile_pattern.

matcher

(src)

;return m.

matches();}}

引數校驗不通過會出現org.springframework.validation.bindexception的異常,需要攔截這個繫結異常,輸出錯誤資訊。

這裡自定義乙個全域性異常***,使用@controlleradvice註解

@controlleradvice可用於實現:

JSR303引數校驗和全域性異常處理

dologin responsebody public result dologin loginvo loginvo if stringutils.isempty mobile 手機格式判斷if validatorutil.ismobile mobile 一 引入依賴 org.springframe...

筆記 JSR303 表單校驗

要在應用校驗,需要 1.宣告校驗規則 data public class taco data public class order 2.在表單繫結的時候執行校驗 新增了 valid註解對taco物件進行校驗和errors屬性判斷是否出錯。public string processdesign val...

JSR303後端校驗(一)

jsr303後端校驗 一 1 在pom檔案中新增依賴 dependency groupid org.hibernate groupid artifactid hibernate validator artifactid version 6.0.16.final version dependency ...