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

解決@Validated注解無效,嵌套對象屬性的@NotBlank無效問題

 更新時間:2021年10月20日 09:52:20   作者:linlangleo  
這篇文章主要介紹了解決@Validated注解無效,嵌套對象屬性的@NotBlank無效問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

@Validated注解無效,嵌套對象屬性的@NotBlank無效

最近在做的公司項目是一個表單系統(tǒng),剛好要用到@Validated注解來對表單字段進行驗證。第一次使用遇到了一些坑,問了同事之后,總算是掌握了。

步驟

首先,在dto實體你想要做驗證的屬性前,加上@NotBlank/NotNull/NotEmpty注解:

他們的區(qū)別如下:

  • @NotBlank:只用在String上,表示傳進來的值不能為null,而且調(diào)用trim()后,長度必須大于0
  • @NotNull:不能為null,但可以為empty(分配了內(nèi)存空間,但值為空)
  • @NotEmpty:不能為null,而且長度必須大于0

然后在service層接口前添加注解@Validated

然后運行,給屬性傳遞空值,發(fā)現(xiàn)沒有任何反應(yīng);是因為沒在接口方法的參數(shù)前加上@Valid注解,如下所示:

加上后再運行,傳遞空值,成功報錯。 (同時,以上總結(jié)可以加在controller層進行驗證,@valid同樣加在方法參數(shù)前,@validated加在controller類名前圖

同樣能起效果)

內(nèi)層對象無法驗證

做到后面發(fā)現(xiàn)傳遞的對象里面還有一個對象,要對里面的對象進行驗證,這時候是驗證不到的

需要在里面對象前也加上總結(jié)@valid,這樣,無論嵌套多少,都可以驗證

(對于對象泛型,也能驗證成功)

@Validated注解不生效問題、如何使用

1、需要引入的包

(缺少其中一個包,項目會報錯,或者validate注解不生效)

  • hibernate-validator-6.0.14.Final.jar
  • jboss-logging-3.3.2.Final.jar
  • validation-api-2.0.1.Final.jar
  • classmate-1.4.0.jar

2、將@Validated打在controller中需要驗證的實體類前面

@PostMapping("/add")
@ResponseBody
public AjaxResult addSave(@Validated SysDept dept){       
}

3、在具體實體類中定義字段的驗證規(guī)則

(這里注解可以放在字段上,或者是get方法上,放在set方法上,會報錯)

private String deptName; 
@NotBlank(message = "部門名稱不能為空")
@Size(min = 0, max = 30, message = "部門名稱長度不能超過30個字符")
public String getDeptName(){
    return deptName;
}

4、數(shù)據(jù)格式校驗

對其錯誤進行處理(全局異常處理),不進行處理,會直接報400錯誤

@ControllerAdvice

可以實現(xiàn)三個方面的功能:

  • 全局異常處理
  • 全局數(shù)據(jù)綁定
  • 全局數(shù)據(jù)預(yù)處理
@RestControllerAdvice
public class GlobalExceptionHandler{
    @ExceptionHandler(BindException.class)
    public ApiResult validatedBindException(BindException e){
        log.error(e.getMessage(), e);
        String message = e.getAllErrors().get(0).getDefaultMessage();
        return ApiResult .error(message);
    }
}

在controller中的方法中進行單個參數(shù)校驗注意事項

1、controller類上打上注解@Validated

2、方法參數(shù)上給出格式如:

public Result method(@NotNull @RequestParam("id") Long id) {

3、其中@RequestParam("id")必須加,否則驗證無效

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring通過<import>標簽導(dǎo)入外部配置文件

    Spring通過<import>標簽導(dǎo)入外部配置文件

    之前文章里我們講到Spring加載Xml配置文件的細節(jié),那么加載完了我們肯定要解析這個配置文件中定義的元素。這篇我們首先來分析下Spring是如何通過標簽導(dǎo)入外部配置文件的。
    2021-06-06
  • 解決HttpPost+json請求---服務(wù)器中文亂碼及其他問題

    解決HttpPost+json請求---服務(wù)器中文亂碼及其他問題

    這篇文章主要介紹了解決HttpPost+json請求---服務(wù)器中文亂碼及其他問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • SpringBoot之如何搭建SpringBoot+Maven項目

    SpringBoot之如何搭建SpringBoot+Maven項目

    這篇文章主要介紹了SpringBoot之如何搭建SpringBoot+Maven項目問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 配置java環(huán)境變量(linux mac windows7)

    配置java環(huán)境變量(linux mac windows7)

    本文給大家詳細總結(jié)介紹了Linux、MAC以及Windows下配置java環(huán)境變量的方法,非常的細致全面,有需要的小伙伴可以參考下
    2015-11-11
  • Java通過反射獲取方法參數(shù)名的方式小結(jié)

    Java通過反射獲取方法參數(shù)名的方式小結(jié)

    這篇文章主要為大家詳細介紹了Java如何通過反射獲取方法參數(shù)名的方式,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-02-02
  • SpringBoot自定義路由覆蓋實現(xiàn)流程詳解

    SpringBoot自定義路由覆蓋實現(xiàn)流程詳解

    這篇文章主要介紹了SpringBoot自定義路由覆蓋實現(xiàn)流程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-01-01
  • 簡潔實用的Java Base64編碼加密異常處理類代碼

    簡潔實用的Java Base64編碼加密異常處理類代碼

    這篇文章主要介紹了簡潔實用的Java Base64編碼加密異常處理類代碼,有一定的實用價值,需要的朋友可以參考下
    2014-07-07
  • Java重點之基于比較的七大排序

    Java重點之基于比較的七大排序

    最近幾天在研究排序算法,看了很多博客,發(fā)現(xiàn)網(wǎng)上有的文章中對排序算法解釋的并不是很透徹,而且有很多代碼都是錯誤的,所以我根據(jù)這幾天看的文章,整理了一個較為完整的排序算法總結(jié),本文中的所有算法均有JAVA實現(xiàn),經(jīng)本人調(diào)試無誤后才發(fā)出,如有錯誤,請各位前輩指出
    2021-10-10
  • 軟件開發(fā)七大過程模型

    軟件開發(fā)七大過程模型

    這篇文章主要介紹了Java七大過程模型詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2021-08-08
  • 淺談JavaIO之try with底層原理

    淺談JavaIO之try with底層原理

    眾所周知,所有被打開的系統(tǒng)資源,比如流、文件或者Socket連接等,都需要被開發(fā)者手動關(guān)閉,否則隨著程序的不斷運行,資源泄露將會累積成重大的生產(chǎn)事故。本文將介紹JavaIO之try with底層原理。
    2021-06-06

最新評論

额济纳旗| 望奎县| 酉阳| 裕民县| 台州市| 通化县| 荃湾区| 北宁市| 临海市| 汕尾市| 济源市| 德惠市| 罗源县| 哈巴河县| 郧西县| 乐山市| 灵武市| 云霄县| 龙南县| 门头沟区| 马鞍山市| 金堂县| 都江堰市| 比如县| 岳阳市| 泌阳县| 东台市| 禹州市| 台安县| 西城区| 镇赉县| 宣城市| 沛县| 甘南县| 平武县| 玉山县| 土默特右旗| 云浮市| 裕民县| 彰化市| 新巴尔虎左旗|