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

解決@Validated對List對象驗證失效問題

 更新時間:2025年09月25日 08:58:01   作者:to方圓圓  
文章指出@Validated注解無法驗證List數(shù)組參數(shù),建議手動逐項驗證或封裝List為對象進(jìn)行驗證,前者代碼冗余但直接,后者需調(diào)整JSON結(jié)構(gòu)但更簡潔,根據(jù)需求選擇方案,權(quán)衡靈活性與參數(shù)改造成本

@Validated對List對象驗證失效

在實際開發(fā)中,常常會對接口api入?yún)⒆龈袷津炞C,有些入?yún)⑹荓ist數(shù)組對象。

  public ApiResponse receiveManualTranscoding(@Validated @RequestBody List<SdZmDto> sdZmDtos) 

其實這樣是失效的,會發(fā)現(xiàn)其SdZmDto并不會進(jìn)行驗證。

因為@Validated參數(shù)只能驗證單個對象。

解決方法1

手動對每一個參數(shù)對象進(jìn)行做驗證,但是代碼會顯得冗余

private ResultVo validate(@Valid SdZmDto gwbaDto) {
        Set<ConstraintViolation<@Valid SdZmDto >> validateSet = Validation.buildDefaultValidatorFactory()
                .getValidator()
                .validate(gwbaDto);
        if (!CollectionUtils.isEmpty(validateSet)) {
            String messages = validateSet.stream()
                    .map(ConstraintViolation::getMessage)
                    .reduce((m1, m2) -> m1 + ";" + m2)
                    .orElse("參數(shù)輸入有誤!");
            return ResultVo.builder().code(ResultConstants.FALSE).message(SYSTEM_ERROR_TSBAMESSAGE + messages).build();
        }
        return null;
    }

解決方法2

定義一個對象,將list封裝進(jìn)行,則驗證就驗證單個對象了。

@Data
public class ValidList<E> implements List<E> {
  @Valid
  private List<E> list = new ArrayList<>();
}
將  public ApiResponse receiveManualTranscoding(@Validated @RequestBody List<SdZmDto> sdZmDtos) 
改成
public ApiResponse receiveManualTranscoding(@Validated @RequestBody ValidList<SdZmDto> sdZmDtos) 

選擇方案

解決方法1雖然冗余代碼,但是符合需求,如果采用方法2,則需要將請求的json參數(shù)進(jìn)行做調(diào)整。

 @PostMapping("/receiveManualTranscoding")
    @ResponseBody
    public ApiResponse receiveManualTranscoding(@RequestBody List<SdZmDto> sdZmDtos) {
        for(SdZmDto sdZmDto : sdZmDtos){
            ApiResponse apiResponse = null;
            if((apiResponse = validate(sdZmDto)) != null){
                return apiResponse;
            }
        }
        ajmApiService.receiveManualTranscoding(sdZmDtos);
        return ApiDataResponse.ofSuccess();
    }

    private ApiResponse validate(@Valid SdZmDto sdZmDto) {
        Set<ConstraintViolation<@Valid SdZmDto >> validateSet = Validation.buildDefaultValidatorFactory()
                .getValidator()
                .validate(sdZmDto);
        if (!CollectionUtils.isEmpty(validateSet)) {
            String messages = validateSet.stream()
                    .map(ConstraintViolation::getMessage)
                    .reduce((m1, m2) -> m1 + ";" + m2)
                    .orElse("參數(shù)輸入有誤!");
            return ApiResponse.ofFail(messages);
        }
        return null;
    }
    ```

總結(jié)

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

相關(guān)文章

  • Java中字符串替換的幾種常用方法總結(jié)

    Java中字符串替換的幾種常用方法總結(jié)

    這篇文章主要介紹了Java中字符串替換的幾種常用方法,包括String類的replace、replaceAll和replaceFirst方法,使用StringBuilder或StringBuffer類,自定義替換方法,以及使用第三方庫如Apache?Commons?Lang,需要的朋友可以參考下
    2025-04-04
  • 解決JavaEE開發(fā)中字符編碼出現(xiàn)亂碼的問題

    解決JavaEE開發(fā)中字符編碼出現(xiàn)亂碼的問題

    下面小編就為大家?guī)硪黄鉀QJavaEE開發(fā)中字符編碼出現(xiàn)亂碼的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • 教你怎么用Java數(shù)組和鏈表實現(xiàn)棧

    教你怎么用Java數(shù)組和鏈表實現(xiàn)棧

    本篇文章為大家詳細(xì)介紹了怎么用Java數(shù)組和鏈表實現(xiàn)棧,文中有非常詳細(xì)的代碼示例及注釋,對正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • Mac系統(tǒng)上安裝?JDK?8?最穩(wěn)最全教程(Homebrew?方式)

    Mac系統(tǒng)上安裝?JDK?8?最穩(wěn)最全教程(Homebrew?方式)

    Homebrew是一個開源的包管理器,專為macOS(盡管也可以在Linux上使用)設(shè)計,用來簡化在Mac操作系統(tǒng)上安裝軟件的過程,這篇文章主要介紹了Mac系統(tǒng)上使用Homebrew方式安裝JDK8最穩(wěn)最全教程的相關(guān)資料,需要的朋友可以參考下
    2026-04-04
  • Mybatis實現(xiàn)動態(tài)SQL編寫詳細(xì)代碼示例

    Mybatis實現(xiàn)動態(tài)SQL編寫詳細(xì)代碼示例

    這篇文章主要為大家詳細(xì)介紹了Mybatis中動態(tài)SQL的編寫使用,動態(tài)SQL技術(shù)是一種根據(jù)特定條件動態(tài)拼裝SQL語句的功能,它存在的意義是為了解決拼接SQL語句字符串時的痛點(diǎn)問題,感興趣想要詳細(xì)了解可以參考下文
    2023-05-05
  • MyBatis 添加元數(shù)據(jù)自定義元素標(biāo)簽的實現(xiàn)代碼

    MyBatis 添加元數(shù)據(jù)自定義元素標(biāo)簽的實現(xiàn)代碼

    這篇文章主要介紹了MyBatis 添加元數(shù)據(jù)自定義元素標(biāo)簽的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Android/Java中創(chuàng)建類實例的各種模式實例代碼

    Android/Java中創(chuàng)建類實例的各種模式實例代碼

    這篇文章主要介紹了Android/Java中創(chuàng)建類實例各種模式的相關(guān)資料,包括New關(guān)鍵字、靜態(tài)工廠方法、建造者模式、單例模式、依賴注入、抽象工廠模式、原型模式和Reflection,每個模式有其特點(diǎn)和適用場景,需要的朋友可以參考下
    2025-09-09
  • springmvc學(xué)習(xí)筆記-返回json的日期格式問題的解決方法

    springmvc學(xué)習(xí)筆記-返回json的日期格式問題的解決方法

    本篇文章主要介紹了springmvc學(xué)習(xí)筆記-返回json的日期格式問題的解決方法,解決了日期格式的輸出,有興趣的可以了解一下。
    2017-01-01
  • SpringBoot中的配置文件加載優(yōu)先級詳解

    SpringBoot中的配置文件加載優(yōu)先級詳解

    這篇文章主要介紹了SpringBoot中的配置文件加載優(yōu)先級詳解,springboot啟動會掃描以下位置的application.properties或者application.yml文件作為Spring?boot的默認(rèn)配置文件,需要的朋友可以參考下
    2024-01-01
  • springboot實現(xiàn)發(fā)送QQ郵箱

    springboot實現(xiàn)發(fā)送QQ郵箱

    這篇文章主要為大家詳細(xì)介紹了springboot實現(xiàn)發(fā)送QQ郵箱,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06

最新評論

龙里县| 大渡口区| 盐亭县| 泾阳县| 浮梁县| 台中县| 永修县| 新化县| 新化县| 贞丰县| 什邡市| 高安市| 昭通市| 沈丘县| 广饶县| 旺苍县| 响水县| 日照市| 商南县| 韶关市| 曲靖市| 北海市| 大石桥市| 岳普湖县| 高安市| 广安市| 山阳县| 石首市| 乐亭县| 龙井市| 页游| 永福县| 鄯善县| 新泰市| 惠东县| 隆昌县| 白玉县| 龙陵县| 秭归县| 孟州市| 奉新县|