一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

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

服務器之家 - 編程語言 - Java教程 - 使用注解@Validated和BindingResult對入參進行非空校驗方式

使用注解@Validated和BindingResult對入參進行非空校驗方式

2022-02-26 00:46merge. Java教程

這篇文章主要介紹了使用注解@Validated和BindingResult對入參進行非空校驗方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

注解@Validated和BindingResult對入參非空校驗

在項目當中少不了入參校驗,服務器和瀏覽器互不信任,不能因為前端加入參判斷了后臺就不處理了,這樣是不對的。

比如前臺傳過來一個對象作為入參參數,這個對象中有些屬性允許為空,有些屬性不允許為空。那么你還在使用if()else{}進行非空判斷嗎?不妨嘗試下使用注解,可以使用@Validated和BindingResult

注意:BindingResult需要放到@Validated后面

示例代碼如下:普通屬性可以用@NotEmpty() 特殊的使用@NotNull() 比如:枚舉類型

實體類:什么不允許為空就加

?
1
@NotEmpty(groups = {SchoolDTO.SchoolGroup.class},message = "學校名不能為空")

注意:重要的事情叮囑兩遍。public interface SchoolGroup{} 別忘了加這個!public interface SchoolGroup{} 別忘了加這個!

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class SchoolDTO implements Serializable {
    private Long id;
    @NotEmpty(groups = {SchoolDTO.SchoolGroup.class},message = "學校名不能為空")
    private String schoolName;
 
    @NotNull
    @NotEmpty(groups = {SchoolDTO.SchoolGroup.class},message = "學校負責人不能為空")
    private String schoolPrincipal;
 
    @NotNull
    @NotEmpty(groups = {SchoolDTO.SchoolGroup.class},message = "職務不能為空")
    private String principalPosition;
 
    @NotNull
    @NotEmpty(groups = {SchoolDTO.SchoolGroup.class},message = "聯系電話不能為空")
    private String schoolPhone;
    //getter setter tostring 省略
    public interface SchoolGroup{}  別忘了加這個
}

控制層:在入參對象上加@Validated({SchoolDTO.SchoolGroup.class}), BindingResult bindingResult @Validated進行驗證,BindingResult可以獲取校驗錯誤信息

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@PostMapping("/schools")
  @PreAuthorize("hasRole(\"" + AuthoritiesConstants.ADMIN + "\")")
  public Map<String,Object> createSchool(@RequestBody @Validated({SchoolDTO.SchoolGroup.class}) SchoolDTO schoolDTO,BindingResult bindingResult) throws Exception {
    //返回校驗錯誤信息
      Map<String,Object>map=new HashMap<>();
      if(bindingResult.hasErrors()){
          map.put("success","false");
          map.put("message",bindingResult.getAllErrors());
          return map;
      }
      // .........業務省略
          return map;
      }
  }

測試:入參的時候我沒有傳principalPosition和schoolPhone

使用注解@Validated和BindingResult對入參進行非空校驗方式

@Validated 和 BindingResult 使用遇到的坑

@Validated 與BindingResult 需要相鄰,否則 變量result 不能接受錯誤信息

控制臺輸出

Field error in object 'entity' on field '變量': rejected value [null]; codes [NotNull.entity.變量,NotNull.變量,NotNull.java.lang.String,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes

正確的內容截圖

使用注解@Validated和BindingResult對入參進行非空校驗方式

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/weixin_43770545/article/details/90237097

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲人成综合在线播放 | 国产重口老太伦 | 俄罗斯引擎首页进入 | 好大好爽好涨太深了小喜 | 亚洲国产精品自在自线观看 | 日本免费一二区 | 天天狠天天天天透在线 | 午夜影视在线观看 | 大学生宿舍飞机 free | 欧美草逼网 | 天天舔天天干天天操 | 成人影院在线观看 | 天堂在线中文字幕 | 国产亚洲精品一区久久 | 91精品啪在线观看国产日本 | 国产剧情一区 | 女人把扒开给男人爽 | 精品久久久久久久国产潘金莲 | 乳女教师欲乱动漫无修版动画3d | 华人亚洲欧美精品国产 | 草馏社区最新1024 | 国产成人在线播放 | 亚欧洲乱码视频一二三区 | 四大美女思春艳史片 | 精品久久久久久 | 天天色资料| 日韩国产成人精品视频 | 成人久久网站 | 精品在线小视频 | 天美麻豆 | 婷婷丁香色综合狠狠色 | 91夜夜人人揉人人捏人人添 | 激情小视频网站 | 国产草逼视频 | 男人视频网站 | 欧美高清一区 | 国产精品亚洲精品日韩已方 | 成年男女免费视频观看性 | 91桃色网站| 国产在线步兵一区二区三区 | 亚洲精品视频观看 |