最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot 參數(shù)校驗的具體實現(xiàn)方式

 更新時間:2019年06月04日 09:25:41   作者:廢物大師兄  
這篇文章主要介紹了Spring Boot 參數(shù)校驗的具體實現(xiàn)方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1、背景介紹

開發(fā)過程中,后臺的參數(shù)校驗是必不可少的,所以經(jīng)常會看到類似下面這樣的代碼

這樣寫并沒有什么錯,還挺工整的,只是看起來不是很優(yōu)雅而已。

接下來,用Validation來改寫這段

2、Spring Boot文檔中的Validation

在Spring Boot的官網(wǎng)中,關于Validation只是簡單的提了一句,如下

其實,Spring Validator和Hibernate Validator是兩套Validator,可以混著用,這里我們用Hibernate Validator

3、Hibernate Validator

https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#preface

4、Spring Validator

https://docs.spring.io/spring/docs/5.0.5.RELEASE/spring-framework-reference/core.html#validation

5、示例

5.1、引入spring-boot-starter-validation

5.2、定義一個對象

5.3、適用@Valid校驗,并將校驗結果放到BindingResult對象中

注意:

默認情況下,如果校驗失敗會拋javax.validation.ConstraintViolationException異常,可以用統(tǒng)一異常處理去對這些異常做處理An Errors/BindingResult argument is expected to be declared immediately after the model attribute5.4、看效果

如果在校驗的對象后面再加上Model對象的話,如果返回的是ModelAndView就可以將這個Model設置到其中,這樣在頁面就可以取到錯誤消息了

僅僅只是單字段校驗的話未免也太不靈活了吧,如果字段之間有關聯(lián)關系,那該如何校驗呢?答案是自定義

5.5、自定義校驗規(guī)則

https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#validator-customconstraints

這里,以優(yōu)惠券創(chuàng)建為例來演示如何自定義校驗規(guī)則

首先,優(yōu)惠券表單如下(僅僅只是演示用):

這里除了自定義了兩條校驗規(guī)則之外,還用到了分組。

為什么要有分組這一說呢?因為,舉個例子,添加的時候不需要校驗id,而修改的時候id不能為空,有了分組以后,就可以添加的時候校驗用組A,修改的時候校驗用組B

下面重點看一下@CheckTimeInterval

第一步、定義一個注解叫CheckTimeInterval

第二步、定義Validator去校驗它

順便提一句,這里BeanWrapper去取對象的屬性值,我們稍微看一下BeanWrapper是做什么的

言歸正傳

第三步、驗證

看,自定義的校驗生效了

6、補充

6.1、校驗模式

https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#section-fail-fast

下面補充一點,關于校驗模式

默認會校驗完所有屬性,然后將錯誤信息一起返回,但很多時候不需要這樣,一個校驗失敗了,其它就不必校驗了

為此,需要這樣設置

6.2、單個參數(shù)校驗

如果是調整頁面的時候參數(shù)校驗失敗的話,這時可以不做處理,讓其調到錯誤頁面。

如果是接口參數(shù)校驗失敗的話,可以在這里進行統(tǒng)一處理,并返回。例如:

6.3、錯誤頁面

以剛才優(yōu)惠券詳情為例

http://localhost:8080/coupon/detail.html      400

http://localhost:8080/coupon/detail.html?id=    400

http://localhost:8080/coupon/detail.html?id=abc  400

http://localhost:8080/coupon/detail222.html?id=123  404

無權限  403

int a = 1 / 0;  500

6.4、@Valid與@Validated

http://m.fzitv.net/article/155033.htm

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Springboot3+Redis實現(xiàn)消息隊列的多種方法小結

    Springboot3+Redis實現(xiàn)消息隊列的多種方法小結

    本文主要介紹了Springboot3+Redis實現(xiàn)消息隊列的多種方法小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-03-03
  • Java8中stream流的collectingAndThen方法應用實例詳解

    Java8中stream流的collectingAndThen方法應用實例詳解

    Java8中的Stream流提供了collectingAndThen方法,用于對歸納結果進行二次處理,文章通過User類的數(shù)據(jù)填充,演示了如何使用該方法進行集合去重、查找最高工資員工、計算平均工資等操作,感興趣的朋友跟隨小編一起看看吧
    2025-03-03
  • Java實現(xiàn)雪花算法的工具類介紹

    Java實現(xiàn)雪花算法的工具類介紹

    雪花 (SnowFlake )算法是一種分布式唯一ID生成算法,可以生成全局唯一的ID標識符,就像自然界中雪花一般沒有相同的雪花,本文和大家分享了一個雪花算法工具類,需要的可以收藏一下
    2023-05-05
  • Java this super代碼實例及使用方法總結

    Java this super代碼實例及使用方法總結

    這篇文章主要介紹了Java this super代碼實例及使用方法總結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • Redis之GEO存儲地理位置信息的使用

    Redis之GEO存儲地理位置信息的使用

    在外賣軟件中的附近的美食店鋪、外賣小哥的距離,打車軟件附近的車輛,交友軟件中附近的小姐姐。我們都可以利用redis的GEO地理位置計算得出。本文就來詳細的介紹一下
    2021-10-10
  • slf4j與jul、log4j1、log4j2、logback的集成原理

    slf4j與jul、log4j1、log4j2、logback的集成原理

    這篇文章主要介紹了slf4j與jul、log4j1、log4j2、logback的集成原理,以及通用日志框架與具體日志實現(xiàn)系統(tǒng)的機制機制介紹,包括依賴的jar包,jar沖突處理等
    2022-03-03
  • Mybatis自定義SQL的關系映射、分頁、排序功能的實現(xiàn)

    Mybatis自定義SQL的關系映射、分頁、排序功能的實現(xiàn)

    這篇文章主要介紹了Mybatis自定義SQL的關系映射、分頁、排序功能的實現(xiàn),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • java 從int數(shù)組中獲取最大數(shù)的方法

    java 從int數(shù)組中獲取最大數(shù)的方法

    這篇文章主要介紹了java 從int數(shù)組中獲取最大數(shù)的方法,需要的朋友可以參考下
    2017-02-02
  • IDEA使用Mybatis插件 MyBatisCodeHelper-Pro的圖文教程

    IDEA使用Mybatis插件 MyBatisCodeHelper-Pro的圖文教程

    這篇文章主要介紹了IDEA使用Mybatis插件 MyBatisCodeHelper-Pro的教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • 一文搞懂String的intern()方法

    一文搞懂String的intern()方法

    這篇文章主要給大家介紹String的intern()方法,文中有詳細的代碼示例,感興趣的小伙伴讓我們一起來看看這究竟是個什么玩意
    2023-06-06

最新評論

米林县| 云林县| 凌云县| 德兴市| 太白县| 都安| 嘉善县| 清镇市| 额济纳旗| 图片| 黎川县| 成都市| 明水县| 大竹县| 南涧| 兴和县| 漳平市| 安多县| 青铜峡市| 铁岭县| 南乐县| 太湖县| 郎溪县| 丹东市| 宝山区| 大港区| 鄂托克前旗| 中卫市| 延边| 彰化市| 阜康市| 雷波县| 瑞昌市| 望都县| 洱源县| 柞水县| 沅陵县| 房山区| 井研县| 仙游县| 喀什市|