激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - springboot @Valid注解對嵌套類型的校驗功能

springboot @Valid注解對嵌套類型的校驗功能

2021-05-05 11:33張占嶺 Java教程

這篇文章主要介紹了springboot~@Valid注解對嵌套類型的校驗,主要介紹 @Valid在項目中的使用,需要的朋友可以參考下

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

實體:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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接口:

?
1
2
3
4
5
6
7
8
9
10
@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即可實現對這個屬性的校驗

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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錯誤就可以在單元測試下面正常輸出了!

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@test
 public void initialaccount_employee_name_empty() {
  list<employee> employees = new arraylist<>();
  employees.add(employee.builder()
    .name("")
    .email("[email protected]")
    .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的話,由于用戶名為空,所以會出現錯誤提示

?
1
2
3
4
5
api.post()
    .uri("/v1/12345/2018-03")
    .body(bodyinserters.fromobject(request))
    .exchange()
    .expectstatus().isok();

springboot @Valid注解對嵌套類型的校驗功能

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

springboot @Valid注解對嵌套類型的校驗功能

總結

以上所述是小編給大家介紹的springboot @valid注解對嵌套類型的校驗,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/lori/p/9088380.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 强伦女教师视频 | 99re久久最新地址获取 | 国产免费传媒av片在线 | 国产大片全部免费看 | 99久久久国产精品 | 国产精品手机在线亚洲 | 黄色一级片在线观看 | 亚州视频在线 | 亚洲一区第一页 | av免费在线不卡 | 久久免费视频一区 | 精品久久久久久久 | 天天色狠狠干 | 久久精品视频一区二区三区 | 羞羞的动漫在线观看 | 大片毛片 | 精品国产96亚洲一区二区三区 | 欧美性生活视频免费 | 久久精品视频69 | 超91在线 | 欧美成人精品h版在线观看 国产一级淫片在线观看 | 成人av一区二区免费播放 | 久久久久久亚洲综合影院红桃 | 成人午夜视屏 | 国产瑟瑟视频 | 国产一区视频观看 | 久久久久女人精品毛片九一 | 中文字幕在线免费观看电影 | 成人18免费观看 | 天天黄色片 | 欧美成人免费tv在线播放 | 成人宗合网 | 爽爽视频免费看 | 国产一级毛片国产 | 九九热在线视频免费观看 | 操操插插 | 成人福利视频在线观看 | 成人短视频在线观看 | 美女露100%无遮挡 | 国产chinesehd精品91 | 亚洲网站免费观看 |