參考英文原文連線
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...