分組驗證 Validation group

2021-10-07 01:45:42 字數 2515 閱讀 2813

參考英文原文連線

spring mvc 3.1開始引入了分組驗證。

接下來一步步演示如何進行分組驗證,分為用spring和不用spring兩部分。

建立分組

就是建幾個介面

public

class

account

implements

passwordaware

inte***ce

validationsteptwo

}

定義驗證限制
@samepasswords

(groups =

)public

class

account

implements

passwordaware

)private string username;

@email

(groups =

)@notblank

(groups =

)private string email;

@notblank

(groups =

)@strongpassword

(groups =

)private string password;

@notblank

(groups =

)private string confirmedpassword;

// getters and setters

}

在controller中使用@validated進行驗證
@controller

("validationgroups"

)@sessionattributes

("account"

)public

class

accountcontroller

(value =

"stepone"

, method = requestmethod.post)

public string stepone

(@validated

(account.validationstepone.

class

) account account, errors errors)

return

"redirect:steptwo";}

}

@controller

("validationgroups"

)@sessionattributes

("account"

)public

class

accountcontroller

(value =

"confirm"

)public string confirm

(@validated

() account account, errors errors, sessionstatus status)

return

"redirect:start";}

}

以上就是用spring框架進行驗證的步驟。如果不用spring,步驟如下:

validator validator = validation.

builddefaultvalidato***ctory()

.getvalidator()

;account account =

newaccount()

;// validate with first group

set> constraintviolations =

validator.

validate

(account, account.validationstepone.

class);

assertthat

(constraintviolations)

.hassize(2

);// validate with both groups

set> constraintviolations =

validator.

validate

(account, account.validationstepone.

class

, account.validationsteptwo.

class);

assertthat

(constraintviolations)

.hassize(4

);

乙個小小的坑

定義驗證限制的地方如果group不寫就是default.class,也是乙個介面。所以如果只在乙個欄位上指定了自定義的group(gp.class),並且在驗證引數的時候(無論用spring註解還是不用spring)只指定了gp,沒有default,那除了gp標註的字段,其它的都不會被驗證。

可以用gp繼承default,或者就每個都寫清楚。

Springboot之分組驗證以及自定義引數驗證

springboot之前端引數驗證 學習完簡單的驗證之後發現基本能滿足百分之80的驗證需求,接下來深入學習下驗證。分組驗證需要使用到 validated 這個註解,是spring基於 valid註解新增的功能。所以基本上在controller層接收引數的時候,可以用 validated註解替換 va...

python正則分組 python正則分組的應用

import re text v101 renow.android.2.2.normal.1.alpha.apk?imsi 460029353813976 mobile old version renow.android.2.1.normal.1.alpha channelid 3 m re.sea...

access 分組序號 ACCESS分組查詢

滿意答案 vigorsun86 2013.04.21 採納率 59 等級 12 已幫助 5747人 回答補充 因為不知道利用乙個單錶怎樣區分班級資訊,所以我加了乙個字段 bj,代表班級資訊。修改後的表如下 xh,yw,sx,wy,bj 學號,語文,數學,外語,班級 access中的sql語句 sel...