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

springboot @Valid注解對(duì)嵌套類型的校驗(yàn)功能

 更新時(shí)間:2018年05月25日 14:52:21   作者: 張占嶺  
這篇文章主要介紹了springboot~@Valid注解對(duì)嵌套類型的校驗(yàn),主要介紹 @Valid在項(xiàng)目中的使用,需要的朋友可以參考下

@Valid注解可以實(shí)現(xiàn)數(shù)據(jù)的驗(yàn)證,你可以定義實(shí)體,在實(shí)體的屬性上添加校驗(yàn)規(guī)則,而在API接收數(shù)據(jù)時(shí)添加@valid關(guān)鍵字,這時(shí)你的實(shí)體將會(huì)開啟一個(gè)校驗(yàn)的功能,具體的代碼如下,是最基本的應(yīng)用:

實(shí)體:

public class DepartmentDto {
 @ApiModelProperty("id")
 private String id;
 @ApiModelProperty("上級(jí)Id")
 private String parentId;
 @ApiModelProperty("編號(hào)")
 @NotBlank(message = "部門編號(hào)不能為空。")
 private String code;
 @ApiModelProperty("名稱")
 @NotBlank(message = "部門名稱不能為空。")
 private String name;
 @ApiModelProperty("員工集合")
 @Builder.Default
 private List<Employee> employees = new ArrayList<>();
}

Restful接口:

 @PostMapping()
 public Response<ClientAccount> initialAccount(
   @ApiParam("客戶編號(hào)") @PathVariable String code,
   @ApiParam("賬期") @PathVariable YearMonth accountPeriod,
   @ApiParam("請(qǐng)求體") @Valid @RequestBody Request<DepartmentDto> request) {
  ClientAccount result = clientAccountService.initialAccount(
    code,
    accountPeriod,
    request.getOperator(),
    request.getBody());{}

上面代碼中,我們?yōu)檎?qǐng)求體Request<DepartmentDto>添加了校驗(yàn),在測(cè)試時(shí),如果你的DepartmnetDto.name為空字符時(shí),當(dāng)出現(xiàn)400的異常,麗時(shí)異常消息是『部門名稱不能為空』,這對(duì)于我們來說是沒有問題的,也是符合我們要求的,下面看另一個(gè)場(chǎng)景。

需要驗(yàn)證的實(shí)體是另一個(gè)實(shí)休的屬性

這種方式我們也需要會(huì)看到,一個(gè)大對(duì)象,如被封裝的其它小對(duì)象組成,比如部門下面有員工,這時(shí)如果需要驗(yàn)證員工的有效性,需要如何實(shí)現(xiàn)呢?如果我們不修改源代碼,執(zhí)行結(jié)果是否定的, 它并不會(huì)校驗(yàn)員工這個(gè)對(duì)象,而只針對(duì)第一層對(duì)象的屬性 。

我們將實(shí)體的員工屬性添加上@Valid即可實(shí)現(xiàn)對(duì)這個(gè)屬性的校驗(yàn)

public class DepartmentDto {
 @ApiModelProperty("id")
 private String id;
 @ApiModelProperty("上級(jí)Id")
 private String parentId;
 @ApiModelProperty("編號(hào)")
 @NotBlank(message = "部門編號(hào)不能為空。")
 private String code;
 @ApiModelProperty("名稱")
 @NotBlank(message = "部門名稱不能為空。")
 private String name;
 @Valid
 @ApiModelProperty("員工集合")
 @Builder.Default
 private List<Employee> employees = new ArrayList<>();
}

下面看一下驗(yàn)證結(jié)果,我們的400錯(cuò)誤就可以在單元測(cè)試下面正常輸出了!

@Test
 public void initialAccount_employee_name_empty() {
  List<Employee> employees = new ArrayList<>();
  employees.add(Employee.builder()
    .name("")
    .email("zzl@sina.com")
    .idNumber("110111198203182012")
    .build());
  List<DepartmentDto> departments = new ArrayList<>();
  departments.add(DepartmentDto.builder()
    .name("部門")
    .description("技術(shù)部")
    .salaryType(SalaryType.ResearchAndDevelopmentCosts)
    .employees(employees)
    .build());
  ClientAccountDto clientAccountDto = ClientAccountDto.builder()
    .name("客戶")
    .departments(departments)
    .build();
  Request<ClientAccountDto> request = buildRequest(clientAccountDto);
  api.post()
    .uri("/v1/12345/2018-03")
    .body(BodyInserters.fromObject(request))
    .exchange()
    .expectStatus().isEqualTo(400)
    .expectBody()
    .jsonPath("$.errors[0].message").isEqualTo("姓名不能為空");
 }

 結(jié)果如下,測(cè)試通過

 

如果是測(cè)試它是IsOk的話,由于用戶名為空,所以會(huì)出現(xiàn)錯(cuò)誤提示

api.post()
    .uri("/v1/12345/2018-03")
    .body(BodyInserters.fromObject(request))
    .exchange()
    .expectStatus().isOk();

 

可以看一下結(jié)果的提示信息

 

總結(jié)

以上所述是小編給大家介紹的springboot @Valid注解對(duì)嵌套類型的校驗(yàn),希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 解決maven加載依賴時(shí)遇到的問題

    解決maven加載依賴時(shí)遇到的問題

    這篇文章主要介紹了解決maven加載依賴時(shí)遇到的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • java多線程之Phaser的使用詳解

    java多線程之Phaser的使用詳解

    這篇文章主要介紹了java多線程之Phaser的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Java字符編碼解碼的實(shí)現(xiàn)詳解

    Java字符編碼解碼的實(shí)現(xiàn)詳解

    本篇文章介紹了,Java字符編碼解碼的實(shí)現(xiàn)詳解。需要的朋友參考下
    2013-05-05
  • springboot 設(shè)置局域網(wǎng)訪問的實(shí)現(xiàn)步驟

    springboot 設(shè)置局域網(wǎng)訪問的實(shí)現(xiàn)步驟

    Spring Boot是一個(gè)開源Java-based框架,用于創(chuàng)建獨(dú)立的、生產(chǎn)級(jí)別的Spring應(yīng)用,它旨在簡(jiǎn)化Spring應(yīng)用的初始搭建及開發(fā)過程,通過提供各種自動(dòng)配置的starter包,Spring Boot使得項(xiàng)目配置變得簡(jiǎn)單快速,感興趣的朋友一起看看吧
    2024-02-02
  • Java中字符編碼格式詳解

    Java中字符編碼格式詳解

    在java應(yīng)用軟件中,會(huì)有多處涉及到字符集編碼,有些地方需要進(jìn)行正確的設(shè)置,有些地方需要進(jìn)行一定程度的處理。本文主要給大家講解java中字符的編碼格式等相關(guān)問題
    2016-03-03
  • 詳解JAVA 原型模式

    詳解JAVA 原型模式

    這篇文章主要介紹了JAVA 原型模式的的相關(guān)資料,文中講解非常細(xì)致,實(shí)例幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • SpringBoot整合EasyExcel實(shí)現(xiàn)批量導(dǎo)入導(dǎo)出

    SpringBoot整合EasyExcel實(shí)現(xiàn)批量導(dǎo)入導(dǎo)出

    這篇文章主要為大家詳細(xì)介紹了SpringBoot整合EasyExcel實(shí)現(xiàn)批量導(dǎo)入導(dǎo)出功能的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),需要的小伙伴可以參考下
    2024-03-03
  • idea找不到xxx依賴項(xiàng)的問題及解決方法

    idea找不到xxx依賴項(xiàng)的問題及解決方法

    今天下載這個(gè)依賴一直報(bào)錯(cuò),紅色,顯示錯(cuò)誤找不到依賴項(xiàng),使用了3個(gè)步驟,不太明白哪部解決的,下面小編給大家分享idea找不到xxx依賴項(xiàng)的問題及解決方法,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • Java8的常用時(shí)間api實(shí)用指南

    Java8的常用時(shí)間api實(shí)用指南

    這篇文章主要給大家介紹了關(guān)于Java8的常用時(shí)間api的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • SpringMVC攔截器快速掌握下篇

    SpringMVC攔截器快速掌握下篇

    攔截器(Interceptor)是一種動(dòng)態(tài)攔截方法調(diào)用的機(jī)制,在SpringMVC中動(dòng)態(tài)攔截控制器方法的執(zhí)行。本文將詳細(xì)講講SpringMVC中攔截器的概念及入門案例,感興趣的可以嘗試一下
    2022-08-08

最新評(píng)論

北碚区| 柳江县| 亚东县| 临颍县| 苏州市| 绥江县| 额尔古纳市| 阿拉善右旗| 淄博市| 隆回县| 内江市| 邻水| 白银市| 南京市| 福州市| 高密市| 清流县| 大连市| 巨鹿县| 安顺市| 青阳县| 崇信县| 南雄市| 原阳县| 郴州市| 常德市| 维西| 富宁县| 梁山县| 太保市| 梨树县| 易门县| 喜德县| 峡江县| 顺平县| 龙游县| 清镇市| 榆树市| 襄汾县| 崇仁县| 启东市|