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

SpringBoot整合Hibernate Validator實(shí)現(xiàn)參數(shù)驗(yàn)證功能

 更新時(shí)間:2020年06月17日 08:28:56   作者:陳大帥哥Ray  
這篇文章主要介紹了SpringBoot整合Hibernate Validator實(shí)現(xiàn)參數(shù)驗(yàn)證功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在前后端分離的開(kāi)發(fā)模式中,后端對(duì)前端傳入的參數(shù)的校驗(yàn)成了必不可少的一個(gè)環(huán)節(jié)。但是在多參數(shù)的情況下,在controller層加上參數(shù)驗(yàn)證,會(huì)顯得特別臃腫,并且會(huì)有許多的重復(fù)代碼。這里可以引用Hibernate Validator來(lái)解決這個(gè)問(wèn)題,直接在實(shí)體類進(jìn)行參數(shù)校驗(yàn),驗(yàn)證失敗直接返回錯(cuò)誤信息給前端,減少controller層的代碼量。

一、xml引入Hibernate Validator

<!-- 驗(yàn)證器 -->
<dependency>
   <groupId>org.hibernate.validator</groupId>
   <artifactId>hibernate-validator</artifactId>
   <version>6.1.5.Final</version>
</dependency>

二、通過(guò)注解在實(shí)體類進(jìn)行參數(shù)校驗(yàn)

@Data
public class UserModel {

  @NotNull(message = "用戶名稱不能為空!")
  private String userName;

  @NotNull(message = "age不能為null!")
  @Range(min = 1, max = 888, message = "范圍為1至888")
  private Integer age;

  /**
   * 日期格式化轉(zhuǎn)換
   */
  @NotNull(message = "日期不能為null!")
  private Date date;
}

這里用到的參數(shù)校驗(yàn)的注解有@NotNull和@Range,message是到時(shí)候我們返回給前端的信息,注解的具體意思如下:

  • @Null 被注釋的元素必須為null
  • @NotNull 被注釋的元素不能為null
  • @AssertTrue 被注釋的元素必須為true
  • @AssertFalse 被注釋的元素必須為false
  • @Min(value) 被注釋的元素必須是一個(gè)數(shù)字,其值必須大于等于指定的最小值
  • @Max(value) 被注釋的元素必須是一個(gè)數(shù)字,其值必須小于等于指定的最大值
  • @DecimalMin(value) 被注釋的元素必須是一個(gè)數(shù)字,其值必須大于等于指定的最小值
  • @DecimalMax(value) 被注釋的元素必須是一個(gè)數(shù)字,其值必須小于等于指定的最大值
  • @Size(max,min) 被注釋的元素的大小必須在指定的范圍內(nèi)。
  • @Digits(integer,fraction) 被注釋的元素必須是一個(gè)數(shù)字,其值必須在可接受的范圍內(nèi)
  • @Past 被注釋的元素必須是一個(gè)過(guò)去的日期
  • @Future 被注釋的元素必須是一個(gè)將來(lái)的日期
  • @Pattern(value) 被注釋的元素必須符合指定的正則表達(dá)式。
  • @Email 被注釋的元素必須是電子郵件地址
  • @Length 被注釋的字符串的大小必須在指定的范圍內(nèi)
  • @NotEmpty 被注釋的字符串必須非空
  • @Range 被注釋的元素必須在合適的范圍內(nèi)

三、controller層的方法加上@Valid注解

@PostMapping("/testPost")public Object testPost(@RequestBody @Valid UserModel userModel, BindingResult result){  
                          
		 if(result.hasErrors()){    for(ObjectError error:result.getAllErrors()){      
						                        return error.getDefaultMessage();   
					 } 
											    
				   }  
		return userModel;
}

controller層這里只需要在實(shí)體類的前面加上@Valid注解,這個(gè)注解可以實(shí)現(xiàn)數(shù)據(jù)的驗(yàn)證。這里BindingResult是存儲(chǔ)了校驗(yàn)時(shí)的錯(cuò)誤信息,驗(yàn)證有誤時(shí)將錯(cuò)誤信息返回給前端。這里不使用BindingResult的時(shí)候,控制臺(tái)會(huì)報(bào)MethodArgumentNotValidException,這里可以通過(guò)自定義異常類來(lái)捕捉它,然后去掉BindingResult,以及難看的if判斷。

四、自定義異常類捕捉MethodArgumentNotValidException

@RestControllerAdvice
public class GlobalExceptionAdvice {

  @ExceptionHandler(value = MethodArgumentNotValidException.class)
  public JsonData validException(MethodArgumentNotValidException e) {
    //驗(yàn)證post請(qǐng)求的參數(shù)合法性
    MethodArgumentNotValidException notValidException = e;
    String msg = notValidException.getBindingResult().getFieldError().getDefaultMessage();
    return JsonData.buildError(msg);
  }
}

使用PostMan的測(cè)試結(jié)果如下:

具體的代碼可以在我的gitee上面 查看 ,springboot_validator

到此這篇關(guān)于SpringBoot整合Hibernate Validator實(shí)現(xiàn)參數(shù)驗(yàn)證功能的文章就介紹到這了,更多相關(guān)SpringBoot 參數(shù)驗(yàn)證 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

南城县| 介休市| 平湖市| 嘉鱼县| 扎赉特旗| 开封县| 柏乡县| 桐城市| 奉节县| 镇沅| 客服| 聊城市| 额尔古纳市| 汉阴县| 海宁市| 泰安市| 彰化市| 保亭| 象州县| 广饶县| 平远县| 广宗县| 徐水县| 温泉县| 宜兴市| 松原市| 伊金霍洛旗| 天峻县| 和林格尔县| 巴林左旗| 河曲县| 彰化市| 彭州市| 栖霞市| 涟水县| 德令哈市| 贵州省| 泗水县| 丰原市| 万源市| 绥滨县|