91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springboot中如何實現@Valid注解對嵌套類型的校驗功能

發布時間:2021-07-08 10:53:23 來源:億速云 閱讀:171 作者:小新 欄目:編程語言

這篇文章主要介紹springboot中如何實現@Valid注解對嵌套類型的校驗功能,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

@Valid注解可以實現數據的驗證,你可以定義實體,在實體的屬性上添加校驗規則,而在API接收數據時添加@valid關鍵字,這時你的實體將會開啟一個校驗的功能,具體的代碼如下,是最基本的應用:

實體:

public class DepartmentDto {
 @ApiModelProperty("id")
 private String id;
 @ApiModelProperty("上級Id")
 private String parentId;
 @ApiModelProperty("編號")
 @NotBlank(message = "部門編號不能為空。")
 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("客戶編號") @PathVariable String code,
   @ApiParam("賬期") @PathVariable YearMonth accountPeriod,
   @ApiParam("請求體") @Valid @RequestBody Request<DepartmentDto> request) {
  ClientAccount result = clientAccountService.initialAccount(
    code,
    accountPeriod,
    request.getOperator(),
    request.getBody());{}

上面代碼中,我們為請求體Request<DepartmentDto>添加了校驗,在測試時,如果你的DepartmnetDto.name為空字符時,當出現400的異常,麗時異常消息是『部門名稱不能為空』,這對于我們來說是沒有問題的,也是符合我們要求的,下面看另一個場景。

需要驗證的實體是另一個實休的屬性

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

我們將實體的員工屬性添加上@Valid即可實現對這個屬性的校驗

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

下面看一下驗證結果,我們的400錯誤就可以在單元測試下面正常輸出了!

@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("技術部")
    .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("姓名不能為空");
 }

 結果如下,測試通過

springboot中如何實現@Valid注解對嵌套類型的校驗功能 

如果是測試它是IsOk的話,由于用戶名為空,所以會出現錯誤提示

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

springboot中如何實現@Valid注解對嵌套類型的校驗功能 

可以看一下結果的提示信息

springboot中如何實現@Valid注解對嵌套類型的校驗功能 

以上是“springboot中如何實現@Valid注解對嵌套類型的校驗功能”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

枣庄市| 冕宁县| 茶陵县| 江城| 惠州市| 信阳市| 阳原县| 宜兰县| 浠水县| 清河县| 南溪县| 民勤县| 永泰县| 天水市| 茂名市| 溆浦县| 项城市| 赣州市| 海伦市| 齐齐哈尔市| 娱乐| 泊头市| 河东区| 新闻| 民勤县| 大理市| 洛宁县| 沁水县| 龙陵县| 和林格尔县| 本溪市| 漾濞| 当涂县| 浮山县| 旺苍县| 泰安市| 吉木萨尔县| 阳西县| 德令哈市| 彭山县| 正蓝旗|