Spring Boot 引數校驗

2021-09-08 05:13:04 字數 2011 閱讀 1886

開發過程中,後台的引數校驗是必不可少的,所以經常會看到類似下面這樣的**

這樣寫並沒有什麼錯,還挺工整的,只是看起來不是很優雅而已。

接下來,用validation來改寫這段

在spring boot的官網中,關於validation只是簡單的提了一句,如下

其實,spring validatorhibernate validator是兩套validator,可以混著用,這裡我們用hibernate validator

注意:

如果在校驗的物件後面再加上model物件的話,如果返回的是modelandview就可以將這個model設定到其中,這樣在頁面就可以取到錯誤訊息了

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

這裡,以優惠券建立為例來演示如何自定義校驗規則

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

這裡除了自定義了兩條校驗規則之外,還用到了分組。

為什麼要有分組這一說呢?因為,舉個例子,新增的時候不需要校驗id,而修改的時候id不能為空,有了分組以後,就可以新增的時候校驗用組a,修改的時候校驗用組b

下面重點看一下@checktimeinterval

第一步、定義乙個註解叫checktimeinterval

第二步、定義validator去校驗它

言歸正傳

第三步、驗證

看,自定義的校驗生效了

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

缺省會校驗完所有屬性,然後將錯誤資訊一起返回,但很多時候不需要這樣,乙個校驗失敗了,其它就不必校驗了

為此,需要這樣設定

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

如果是介面引數校驗失敗的話,可以在這裡進行統一處理,並返回。例如:

以剛才優惠券詳情為例

無許可權  403

int a = 1 / 0;  500

SpringBoot 引數校驗

採用註解式引數校驗機制 在control物件前新增標籤 valid 在校驗物件字段上面新增 notblank null 限制只能為null notnull 限制必須不為null assertfalse 限制必須為false asserttrue 限制必須為true decimalmax value ...

Spring Boot 引數校驗

開發過程中,後台的引數校驗是必不可少的,所以經常會看到類似下面這樣的 這樣寫並沒有什麼錯,還挺工整的,只是看起來不是很優雅而已。接下來,用validation來改寫這段 在spring boot的官網中,關於validation只是簡單的提了一句,如下 其實,spring validator和hib...

Spring Boot 引數校驗

開發過程中,後台的引數校驗是必不可少的,所以經常會看到類似下面這樣的 這樣寫並沒有什麼錯,還挺工整的,只是看起來不是很優雅而已。接下來,用validation來改寫這段 在spring boot的官網中,關於validation只是簡單的提了一句,如下 其實,spring validator和hib...