国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

更多QQ空间微信QQ好友腾讯朋友复制链接
您的位置:首頁/技術(shù)文章
文章詳情頁

Spring 使用Validation 驗(yàn)證框架的問題詳解

【字号: 作者:豬豬瀏覽:63日期:2023-06-28 11:12:52
一、介紹

Spring Validation 驗(yàn)證框架對(duì)參數(shù)的驗(yàn)證機(jī)制提供了@Validated (Spring’s JSR-303 規(guī)范,是標(biāo)準(zhǔn) JSR-303 的一個(gè)變種),javax 提供了@Valid(標(biāo)準(zhǔn) JSR-303 規(guī)范),配合 BindingResult 可以直接提供參數(shù)驗(yàn)證結(jié)果。其中對(duì)于字段的特定驗(yàn)證注解,比如 @NotNull。兩者在檢驗(yàn) Controller 的入?yún)⑹欠穹弦?guī)范時(shí),使用@Validated 或者 @Valid 在基本驗(yàn)證功能上沒有太多區(qū)別。但是在分組、注解地方、嵌套驗(yàn)證等功能上兩個(gè)有所不同:

1.@Validated分組:提供分組功能,可在入?yún)Ⅱ?yàn)證時(shí),根據(jù)不同的分組采用不同的驗(yàn)證機(jī)制。可注解位置:可以用在類型、方法和方法參數(shù)上。但是不能用在成員屬性上嵌套驗(yàn)證:用在方法入?yún)⑸蠠o法單獨(dú)提供嵌套驗(yàn)證功能;不能用在成員屬性上;也無法提供框架進(jìn)行嵌套驗(yàn)證;能配合嵌套驗(yàn)證注解 @Valid 進(jìn)行嵌套驗(yàn)證。

2.@Valid分組:無分組功能可注解位置:可以用在方法、構(gòu)造函數(shù)、方法參數(shù)和成員屬性上(兩者是否能用于成員屬性上直接影響能否提供嵌套驗(yàn)證的功能)嵌套驗(yàn)證:用在方法入?yún)⑸蠠o法單獨(dú)提供嵌套驗(yàn)證功能;能夠用在成員屬性上,提示驗(yàn)證框架進(jìn)行嵌套驗(yàn)證;能配合嵌套驗(yàn)證注解@Valid進(jìn)行嵌套驗(yàn)證。

二、使用

1. SpringBoot 2.3.0后需要添加依賴

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId></dependency>

2. 配置 validation 使出現(xiàn)校驗(yàn)失敗即返回

@Configurationpublic class WebConfig { @Bean public Validator validator() {ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class).configure()//failFast的意思只要出現(xiàn)校驗(yàn)失敗的情況,就立即結(jié)束校驗(yàn),不再進(jìn)行后續(xù)的校驗(yàn)。.failFast(true).buildValidatorFactory(); return validatorFactory.getValidator(); } @Bean public MethodValidationPostProcessor methodValidationPostProcessor() {MethodValidationPostProcessor methodValidationPostProcessor = new MethodValidationPostProcessor();methodValidationPostProcessor.setValidator(validator());return methodValidationPostProcessor; }}

4. 編寫全局異常捕獲,捕獲驗(yàn)證失敗,統(tǒng)一返回

@Slf4j@ControllerAdvicepublic class ValidatedExceptionHandler { @ResponseBody @ExceptionHandler(BindException.class) public String exceptionHandler2(BindException exception) {BindingResult result = exception.getBindingResult();if (result.hasErrors()) { return result.getAllErrors().get(0).getDefaultMessage();}return '參數(shù)不可為空!'; } @ResponseBody @ExceptionHandler(MethodArgumentNotValidException.class) public String exceptionHandler2(MethodArgumentNotValidException exception) {BindingResult result = exception.getBindingResult();if (result.hasErrors()) { return result.getAllErrors().get(0).getDefaultMessage();}return '參數(shù)不可為空!'; }}

5. 定義Dto,在參數(shù)上添加注解校驗(yàn)

@Datapublic class ValidDto { @NotEmpty(message = 'name 不可為空!') private String name; @NotBlank(message = 'userId 不可為空!') private String userId; @Min(value = 1, message = '年齡有誤!') @Max(value = 120, message = '年齡有誤!') private int age; @NotBlank(message = '郵箱不可為空!') @Email(message = '郵箱有誤!') private String email; @NotBlank(message = 'mobile不可為空!') @Pattern(regexp = '^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])d{8}$', message = '手機(jī)號(hào)碼有誤!') private String mobile; @NotNull(message = 'validVo 不可為空!') @Valid private ValidVo validVo; @NotEmpty(message = 'list1 不可為空!') @Size(min = 1, max = 2, message = 'list1 數(shù)據(jù)過大') @Valid private List<ValidVo> list1;}

@Datapublic class ValidVo { @NotBlank(message = 'gender is null') private String gender; @NotBlank(message = 'test is null') private String test;}

6. Controller

@RestController@RequestMapping('/valid')@CrossOriginpublic class ValidController { @GetMapping('/GetTest') public String getTest(@Valid ValidDto dto, BindingResult result) {if (result.hasErrors()) { return result.getAllErrors().get(0).getDefaultMessage();}return 'success'; } @GetMapping('/GetTest2') public String getTest2(@Validated ValidDto dto) {return 'success'; } @GetMapping('/GetTest3') public String getTest3(@Validated @RequestBody ValidDto dto) {return 'success'; }}

到此這篇關(guān)于Spring 使用Validation 驗(yàn)證框架的問題詳解的文章就介紹到這了,更多相關(guān)Spring Validation 驗(yàn)證框架內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 国产成人精品福利网站在线 | 久久伊人精品热在75 | 在线观看国产 | 久久经典免费视频 | 久久久久国产精品免费免费 | 在线视频 国产交换 | 九九精品免费观看在线 | 亚洲天堂网站在线 | 午夜亚洲国产成人不卡在线 | 国产精品videossex另类 | 国产精品久久在线 | 午夜影院免费入口 | 三级国产精品一区二区 | 亚洲欧美片 | 日本三级香港三级人妇99视 | 欧美成人私人视频88在线观看 | 91看片淫黄大片欧美看国产片 | 久久精品国产一区二区 | 久久99热久久精品91 | 精品400部自拍视频在线播放 | 亚洲高清国产品国语在线观看 | 久久视频免费在线观看 | 高清毛片一区二区三区 | 国产做国产爱免费视频 | 亚洲久草在线 | 亚洲在线视频一区 | 久久精品国产三级不卡 | 香港三级日本三级三级人妇 | 免费观看一级成人毛片 | 99精品视频在线免费观看 | 成年人免费软件 | dy888午夜国产午夜精品 | 又黄又爽视频好爽视频 | 色一级片 | 办公室紧身裙丝袜av在线 | 欧美在线观看www | 久草黄视频 | 亚洲三及片 | 亚洲国产精品a一区二区三区 | 综合久久99久久99播放 | 热er99久久6国产精品免费 |