成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Spring Boot使用JSR-380進行校驗的示例

瀏覽:123日期:2023-07-21 14:39:14
介紹

JSR-380 是 J2EE 的一個規范,用于校驗實體屬性,它是 JSR-303 的升級版,在 Spring Boot 中可以基于它優雅實現參數校驗。

<!--more-->

示例

在沒有使用 JSR-380 之前,我們一般都會將參數校驗硬編碼在 controller 類中,示例:

public Result add(@RequestBody User user){ if(StringUtils.isBlank(user.getName())){ return Result.error('用戶名不能為空'); } // ...}

而使用 JSR-380 只需要通過添加對應的注解即可實現校驗,示例:

@Datapublic class User{ @NotBlank private String name; private Integer age;}

public Result register(@Validated @RequestBody User user){ // ...}

這樣看起來代碼是不是清爽了很多,只需要在需要校驗的字段上加上對應的校驗注解,然后對需要校驗的地方加上 @Validated 注解,然后框架就會幫我們完成校驗。

通過全局異常自定義錯誤響應

框架校驗失敗之后會拋出異常,需要捕獲這個異常然后來自定義校驗不通過的錯誤響應,這里直接貼代碼,兼容 @RequestBody 、 @ModelAttribute 、 @RequestParam 三種入參的校驗:

@ControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler(value = {MethodArgumentNotValidException.class, BindException.class}) public ResponseEntity<Result> methodArgumentNotValidHandler(HttpServletRequest request, Exception e) { BindingResult bindingResult; if (e instanceof MethodArgumentNotValidException) { //@RequestBody參數校驗 bindingResult = ((MethodArgumentNotValidException) e).getBindingResult(); } else { //@ModelAttribute參數校驗 bindingResult = ((BindException) e).getBindingResult(); } FieldError fieldError = bindingResult.getFieldError(); return ResponseEntity.ok(Result.fail(Result.CODE_PARAMS_INVALID, '[' + fieldError.getField() + ']' + fieldError.getDefaultMessage())); } //@RequestParam參數校驗 @ExceptionHandler(value = {ConstraintViolationException.class, MissingServletRequestParameterException.class}) public ResponseEntity<Result> constraintViolationHandler(Exception e) { String field; String msg; if (e instanceof ConstraintViolationException) { ConstraintViolation<?> constraintViolation = ((ConstraintViolationException) e).getConstraintViolations().stream().findFirst().get(); List<Path.Node> pathList = StreamSupport.stream(constraintViolation.getPropertyPath().spliterator(), false) .collect(Collectors.toList()); field = pathList.get(pathList.size() - 1).getName(); msg = constraintViolation.getMessage(); } else { // 這個不是JSR標準返回的異常,要自定義提示文本 field = ((MissingServletRequestParameterException) e).getParameterName(); msg = '不能為空'; } return ResponseEntity.ok(Result.fail(Result.CODE_PARAMS_INVALID, '[' + field + ']' + msg)); }}

然后再訪問一下接口,可以看到錯誤提示已經按自定義的規范顯示了:

Spring Boot使用JSR-380進行校驗的示例

可以看到都不需要寫任何提示文本就可以完成校驗和提示,上圖的 不能為空 是框架內置的 I18N 國際化支持,每個注解都內置相應的提示模板。

常用校驗注解

注解 描述 @NotNull 驗證值不為 null @AssertTrue 驗證值為 true @Size 驗證值的長度介于 min 和 max 之間,可應用于 String、Collection、Map 和數組類型 @Min 驗證值不小于該值 @Max 驗證值不大于該值 @Email 驗證字符串是有效的電子郵件地址 @NotEmpty 驗證值不為 null 或空,可應用于 String、Collection、Map 和數組類型 @NotBlank 驗證字符串不為 null 并且不是空白字符 @Positive 驗證數字為正數 @PositiveOrZero 驗證數字為正數(包括 0) @Negative 驗證數字為負數 @NegativeOrZero 驗證數字為負數(包括 0) @Past 驗證日期值是過去 @PastOrPresent 驗證日期值是過去(包括現在) @Future 驗證日期值是未來 @FutureOrPresent 驗證日期值是未來(包括現在)

本文完整代碼放在 github 。

Java Bean Validation Basics

JSR-380 規范

到此這篇關于Spring Boot使用JSR-380進行校驗的文章就介紹到這了,更多相關Spring Boot使用JSR-380校驗內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产亚洲毛片| 午夜激情综合网| 午夜成人在线视频| 91久久极品少妇xxxxⅹ软件| 国产免费成人在线视频| 久久成人综合网| 一本到高清视频免费精品| 午夜婷婷国产麻豆精品| 亚洲免费影院| 亚洲综合色噜噜狠狠| 亚洲黄色毛片| √…a在线天堂一区| 亚洲天堂男人| 国产精品麻豆视频| 国产精品v欧美精品v日韩| 午夜天堂精品久久久久| 国产午夜精品一区二区三区嫩草 | 男人的天堂成人在线| 亚洲激情在线播放| 国产精品手机在线| 一区二区三区四区高清精品免费观看| 海角社区69精品视频| 国产精品高潮呻吟久久| 亚洲国产专区| 亚洲黄网站在线观看| 国产一区二区三区免费不卡| 亚洲国产精品久久人人爱蜜臀| 国产精品美女黄网| 日韩欧美国产综合| 91网站最新地址| 久久精品无码一区二区三区| 91女人视频在线观看| 欧美激情综合五月色丁香小说| 欧美在线看片| 亚洲天堂2014| 国产亚洲毛片在线| 五月天一区二区三区| 每日更新成人在线视频| 天堂一区二区在线| 欧美无乱码久久久免费午夜一区| 久草热8精品视频在线观看| 欧美蜜桃一区二区三区| 国产乱人伦偷精品视频不卡| 日韩网站在线看片你懂的| 国产a区久久久| 欧美成人三级在线| 欧美永久精品| 欧美国产一区视频在线观看| 国产精品初高中精品久久| 国产精品成人免费在线| 亚洲人人精品| 视频一区二区三区中文字幕| 欧美四级电影网| 福利一区二区在线观看| 国产亚洲精品7777| 影音先锋中文字幕一区| 亚洲一区二区av在线| 久久国产免费| 久久99九九99精品| 精品免费99久久| 欧美视频成人| 亚洲一区二区三区影院| 色狠狠综合天天综合综合| 国模无码大尺度一区二区三区| 欧美xxxxxxxx| 国产一区久久| 亚洲午夜视频在线观看| 在线观看日韩电影| 国产成人aaaa| 国产欧美视频一区二区| 日韩视频在线播放| 蜜桃视频一区二区三区| 精品国产免费一区二区三区香蕉| 国产精品国码视频| 日韩精品五月天| 日韩精品影音先锋| 99精品黄色片免费大全| 国产精品久久久久久亚洲伦| 国产精品日韩一区二区| 狠狠色狠狠色综合日日91app| 久久综合色婷婷| 一区二区av| 激情综合五月天| 国产午夜三级一区二区三| 男人天堂欧美日韩| 国产91色综合久久免费分享| 中文字幕一区二区三区精华液| 久久一区二区三区四区五区| 国产成人久久精品77777最新版本| 久久精品一本| 国产精品一区二区久久不卡| 日本一区二区视频在线| 性伦欧美刺激片在线观看| 国产精品亚洲а∨天堂免在线| 国产精品人妖ts系列视频| 久久福利一区| www.亚洲在线| 亚洲大片精品永久免费| 日韩一区二区三区四区| 亚洲电影自拍| 国产精品一区免费在线观看| 亚洲人成电影网站色mp4| 色婷婷激情一区二区三区| av网站一区二区三区| 午夜精品久久久久久久| 亚洲精品一区二区三区蜜桃下载 | 国产精品视频第一区| 久久久7777| 欧美jjzz| 免费观看在线综合| 国产精品每日更新在线播放网址| 老牛国产精品一区的观看方式| 99久久婷婷国产综合精品电影| 亚洲gay无套男同| 久久综合丝袜日本网| 色婷婷久久久亚洲一区二区三区| 91丨九色丨尤物| 美女精品自拍一二三四| 欧美国产精品v| 欧美一a一片一级一片| 伊人久久亚洲热| 一区二区久久久| 久久免费电影网| 欧美性猛交xxxxxx富婆| 精品999网站| 成人一区在线观看| 视频一区二区三区入口| 亚洲国产精品激情在线观看| 在线观看成人免费视频| 亚洲麻豆视频| 99精品视频在线播放观看| 久热成人在线视频| 亚洲乱码国产乱码精品精小说| 日韩欧美国产不卡| 午夜在线视频观看日韩17c| 色综合久久综合中文综合网| 精品在线一区二区三区| 一区二区三区在线视频播放| 国产日本亚洲高清| 欧美一区二区三区视频在线观看 | 欧美成人女星排名| 国内成+人亚洲| 丰满亚洲少妇av| 蜜桃视频一区二区| 亚洲精品乱码久久久久久久久| 久久精品夜色噜噜亚洲a∨| 51精品视频一区二区三区| 久久福利影视| 亚洲午夜一级| thepron国产精品| 国产一区二区三区蝌蚪| 日韩不卡一区二区三区| 亚洲人精品午夜| 久久久久久久久久久久久女国产乱 | 欧美成人午夜| 国产精品99久久久久| 日本sm残虐另类| 亚洲国产精品视频| 国产精品三级电影| 久久综合九色综合97婷婷| 91精品国产美女浴室洗澡无遮挡| 久久久亚洲一区| 国产欧美日韩综合一区在线播放 | 影院欧美亚洲| 欧美国产先锋| 99久久伊人网影院| 国产成a人亚洲| 韩国欧美一区二区| 美女网站色91| 亚洲黄网站在线观看| 中文字幕一区二区三区四区| 久久久久久久久99精品| 精品少妇一区二区三区在线播放| 欧美日本一区二区三区四区| 日本高清无吗v一区| 蜜桃久久av| 亚洲欧美日韩综合国产aⅴ| 免费不卡亚洲欧美| 国产精品一区二区在线观看 | 国产成人免费视频一区| 国产在线一区二区| 青青草成人在线观看| 日日骚欧美日韩| 亚洲成va人在线观看| 亚洲成在线观看| 午夜精品久久久久久久蜜桃app| 亚洲成人免费av| 性感美女久久精品| 亚洲第一av色| 午夜欧美2019年伦理| 日韩中文字幕不卡| 男男视频亚洲欧美| 美洲天堂一区二卡三卡四卡视频| 蜜臀av亚洲一区中文字幕| 美女脱光内衣内裤视频久久影院| 蜜乳av一区二区三区| 免费在线观看一区| 国产在线乱码一区二区三区| 狠狠色狠狠色综合| 高清久久久久久|