日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

java注解定义时间格式_SpringBoot基础教程2-1-8 数据验证-自定义日期格式验证

發(fā)布時(shí)間:2024/10/14 javascript 83 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java注解定义时间格式_SpringBoot基础教程2-1-8 数据验证-自定义日期格式验证 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1 概述

javax.validation包與hibernate-validator包中注解能滿足大部分需求,但是還是有必要熟悉下自定義數(shù)據(jù)驗(yàn)證注解,如日期格式驗(yàn)證。

2 添加依賴

org.springframework.boot

spring-boot-starter-web

org.projectlombok

lombok

1.16.20

provided

3 自定義注解

定義一個(gè)@DateTime注解

@Target({ElementType.FIELD, ElementType.PARAMETER})

@Retention(RetentionPolicy.RUNTIME)

@Constraint(validatedBy = DateTimeValidator.class)

public @interface DateTime {

String message() default "格式錯(cuò)誤";

String format() default "yyyyMM";

Class>[] groups() default {};

Class extends Payload>[] payload() default {};

}

@Constraint,指定校驗(yàn)類

message,失敗提示信息

groups,分組驗(yàn)證(后面介紹)

payload,不知道,歡迎留言探討

4 實(shí)現(xiàn)具體驗(yàn)證類

public class DateTimeValidator implements ConstraintValidator {

private DateTime dateTime;

@Override

public void initialize(DateTime dateTime) {

this.dateTime = dateTime;

}

@Override

public boolean isValid(String value, ConstraintValidatorContext context) {

// 如果 value 為空則不進(jìn)行格式驗(yàn)證,為空驗(yàn)證可以使用 @NotBlank @NotNull @NotEmpty 等注解來進(jìn)行控制,職責(zé)分離

if (value == null) {

return true;

}

String format = dateTime.format();

if (value.length() != format.length()) {

return false;

}

SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);

try {

simpleDateFormat.parse(value);

} catch (Exception e){

return false;

}

return true;

}

}

實(shí)現(xiàn)ConstraintValidator接口,定義initialize和isValid方法。

initialize,主要用于初始化,它可以獲得當(dāng)前注解的所有屬性

isValid,進(jìn)行約束驗(yàn)證的主體方法,其中 value 就是驗(yàn)證參數(shù)的具體實(shí)例,context 代表約束執(zhí)行的上下文環(huán)境。

5 實(shí)體類

@Data

public class User {

@NotNull(message = "名字不能為空")

@Length(min = 4, max = 10, message = "name 長度必須在 {min} - {max} 之間")

private String name;

@NotNull(message = "生日不能為空")

@DateTime(format = "yyyyMMdd", message = "格式錯(cuò)誤,正確格式為:yyyyMMdd")

private String birthday;

}

6 控制層

@RestController

public class UserController {

@PostMapping("/user")

public R addUser(@Validated @RequestBody User user, BindingResult br) {

if (br.hasErrors()) {

return R.isFail().msg(br.getFieldError().getDefaultMessage());

} else {

return R.isOk().data(user);

}

}

}

7 測試結(jié)果

8 工程目錄

9 結(jié)束語

說點(diǎn)什么呢,有任何建議,歡迎留言探討,本文源碼。

歡迎關(guān)注博主公眾號(hào),第一時(shí)間推送最新文章

總結(jié)

以上是生活随笔為你收集整理的java注解定义时间格式_SpringBoot基础教程2-1-8 数据验证-自定义日期格式验证的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。