日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
入?yún)⑿r?yàn),你還在寫If-Else?Out了!快來(lái)看看這個(gè)吧

背景

spring-boot-starter-validation進(jìn)行參數(shù)校驗(yàn)!

成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作與策劃設(shè)計(jì),渾源網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:渾源等地區(qū)。渾源做網(wǎng)站價(jià)格咨詢:13518219792

優(yōu)點(diǎn)

  • controller層的代碼看起來(lái)干凈整潔
  • spring-boot-starter-validation本身內(nèi)置了一些注解可以直接使用,比如@NotNull,@NotBlank,@Size等
  • 支持自定義注解,靈活方便

搭建

pom引入依賴包


org.springframework.boot
spring-boot-starter-validation

常用注解

@NotNull
@NotBlank
@NotEmpty
@Size

自定義注解

/**
* 時(shí)間屬性格式校驗(yàn)
* @author:liyajie
* @createTime:2022/1/20 10:38
* @version:1.0
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.PARAMETER,ElementType.FIELD})
@Constraint(validatedBy = DateValidator.Validator.class)
public @interface DateValidator {
// 校驗(yàn)未通過(guò)時(shí)的返回信息
String message() default "日期格式不正確";

// 以下兩行為固定模板
Class[] groups() default {};
Class[] payload() default {};
/**
* 預(yù)期日期格式
*/
String expectValue();

@Slf4j
class Validator implements ConstraintValidator {

private String expectValue;

@Override
public void initialize(DateValidator dateValidator) {
expectValue = dateValidator.expectValue();
}

@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
boolean flag = false;
/**
* 為空直接通過(guò),只做格式驗(yàn)證
*/
if(Strings.isNullOrEmpty(value)){
return true;
}
try {
Date date = DateUtil.formatStr2Date(value, expectValue);
flag = true;
}catch (RuntimeException e){
log.warn("DateValidator 日期格式不正確");
e.printStackTrace();
}
return flag;
}
}
}

測(cè)試

注意點(diǎn)

校驗(yàn)不通過(guò)時(shí),會(huì)直接拋出異常,程序?qū)⑼V箞?zhí)行下面的邏輯,這樣是不合理的,所以我們要捕獲異常,并進(jìn)行處理,方案如下: 全局捕獲異常,并統(tǒng)一返回:

/**
* 全局異常處理
* @author: zhanglei
* @version: 1.0
* @date: 2021/5/18 20:27
*/
@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

/**
* 校驗(yàn)異常
* @author: liyajie
* @date: 2022/1/20 13:07
* @param e
* @return com.lyj.validates.common.R
* @exception:
* @update:
* @updatePerson:
**/
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseBody
public R exceptionHandler(MethodArgumentNotValidException e) {
log.error("exceptionHandler info:", e);
BindingResult bindingResult = e.getBindingResult();
StringBuilder builder = new StringBuilder();
for (FieldError fieldError : bindingResult.getFieldErrors()) {
builder.append(fieldError.getDefaultMessage()).append("!");
}
log.error("message : {}",builder.toString());
return new R("500",builder.toString());
}
}

本文標(biāo)題:入?yún)⑿r?yàn),你還在寫If-Else?Out了!快來(lái)看看這個(gè)吧
鏈接地址:http://www.dlmjj.cn/article/dhhsipg.html