欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決@Validated注解無(wú)效,嵌套對(duì)象屬性的@NotBlank無(wú)效問(wèn)題

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

@Validated注解無(wú)效,嵌套對(duì)象屬性的@NotBlank無(wú)效

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

步驟

首先,在dto實(shí)體你想要做驗(yàn)證的屬性前,加上@NotBlank/NotNull/NotEmpty注解:

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

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

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

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

加上后再運(yùn)行,傳遞空值,成功報(bào)錯(cuò)。 (同時(shí),以上總結(jié)可以加在controller層進(jìn)行驗(yàn)證,@valid同樣加在方法參數(shù)前,@validated加在controller類(lèi)名前圖

同樣能起效果)

內(nèi)層對(duì)象無(wú)法驗(yàn)證

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

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

(對(duì)于對(duì)象泛型,也能驗(yàn)證成功)

@Validated注解不生效問(wèn)題、如何使用

1、需要引入的包

(缺少其中一個(gè)包,項(xiàng)目會(huì)報(bào)錯(cuò),或者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中需要驗(yàn)證的實(shí)體類(lèi)前面

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

3、在具體實(shí)體類(lèi)中定義字段的驗(yàn)證規(guī)則

(這里注解可以放在字段上,或者是get方法上,放在set方法上,會(huì)報(bào)錯(cuò))

private String deptName; 
@NotBlank(message = "部門(mén)名稱(chēng)不能為空")
@Size(min = 0, max = 30, message = "部門(mén)名稱(chēng)長(zhǎng)度不能超過(guò)30個(gè)字符")
public String getDeptName(){
    return deptName;
}

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

對(duì)其錯(cuò)誤進(jìn)行處理(全局異常處理),不進(jìn)行處理,會(huì)直接報(bào)400錯(cuò)誤

@ControllerAdvice

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

  • 全局異常處理
  • 全局?jǐn)?shù)據(jù)綁定
  • 全局?jǐn)?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中的方法中進(jìn)行單個(gè)參數(shù)校驗(yàn)注意事項(xiàng)

1、controller類(lèi)上打上注解@Validated

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

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

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

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

相關(guān)文章

  • 解決Spring?MVC中文亂碼的編碼配置

    解決Spring?MVC中文亂碼的編碼配置

    這篇文章主要為大家介紹了解決SpringMVC中文亂碼的編碼配置示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Spring Boot中整合Spring Security并自定義驗(yàn)證代碼實(shí)例

    Spring Boot中整合Spring Security并自定義驗(yàn)證代碼實(shí)例

    本篇文章主要介紹了Spring Boot中整合Spring Security并自定義驗(yàn)證代碼實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Java設(shè)計(jì)模式中裝飾者模式應(yīng)用詳解

    Java設(shè)計(jì)模式中裝飾者模式應(yīng)用詳解

    裝飾者模式:在不改變?cè)袑?duì)象的基礎(chǔ)之上,動(dòng)態(tài)的將功能附加到對(duì)象上,提供了繼承更有彈性的替代方案,也體現(xiàn)了開(kāi)閉原則。本文將通過(guò)示例詳細(xì)講解一下裝飾者模式,需要的可以參考一下
    2022-11-11
  • Java 單鏈表數(shù)據(jù)結(jié)構(gòu)的增刪改查教程

    Java 單鏈表數(shù)據(jù)結(jié)構(gòu)的增刪改查教程

    這篇文章主要介紹了Java 單鏈表數(shù)據(jù)結(jié)構(gòu)的增刪改查教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • 分布式鎖實(shí)例教程之防止重復(fù)提交

    分布式鎖實(shí)例教程之防止重復(fù)提交

    訂單重復(fù)問(wèn)題已經(jīng)是老生常談的問(wèn)題了,下面這篇文章主要給大家介紹了關(guān)于分布式鎖實(shí)例教程之防止重復(fù)提交的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-11-11
  • java中 == 與 equal 的區(qū)別講解

    java中 == 與 equal 的區(qū)別講解

    這篇文章介紹了java中 == 與 equal 的區(qū)別,有需要的朋友可以參考一下
    2013-10-10
  • javaweb上傳下載實(shí)例完整版解析(下)

    javaweb上傳下載實(shí)例完整版解析(下)

    這篇文章主要為大家詳細(xì)解析了javaweb上傳下載實(shí)例,本文重點(diǎn)在于文件下載功能的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Java方法的可變參數(shù)類(lèi)型實(shí)例分析

    Java方法的可變參數(shù)類(lèi)型實(shí)例分析

    這篇文章主要介紹了Java方法的可變參數(shù)類(lèi)型,通過(guò)實(shí)例對(duì)Java中的可變參數(shù)類(lèi)型進(jìn)行了較為深入的分析,需要的朋友可以參考下
    2014-09-09
  • java8保姆級(jí)lambda表達(dá)式教程

    java8保姆級(jí)lambda表達(dá)式教程

    這篇文章主要介紹了Java8之后的Lambda表達(dá)式的用法,lambda表達(dá)式將大量替代匿名內(nèi)部類(lèi)的使用,簡(jiǎn)化代碼的同時(shí),更突出了原來(lái)匿名內(nèi)部類(lèi)中最重要的那部分包含真正邏輯的代碼,需要的朋友可以參考下
    2023-03-03
  • java實(shí)現(xiàn)直線分形山脈

    java實(shí)現(xiàn)直線分形山脈

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)直線分形山脈,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評(píng)論