springboot数据格式验证(二)——自定义日期格式验证
时间:2021-07-13
本文章向大家介绍springboot数据格式验证(二)——自定义日期格式验证,主要包括springboot数据格式验证(二)——自定义日期格式验证使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
上篇文章说javax.validation
包与hibernate-validator
包中注解能解决80%的问题,那剩下20%的问题咋解决?
答案是自定义注解来解决
我们在工作中经常需要对日期格式进行定义,如果客户端传来的日期字符串不符合要求,那么根本无法保存,但是已有的注解并没有日期格式的验证,那我们就自己实现一个
一、自定义日期格式验证的注解@DateFormat
注解里需要写明用来具体处理验证逻辑的类,这里对应的就是DateFormatValidator.class
@Target({ElementType.PARAMETER, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy = DateFormatValidator.class) public @interface DateFormat { String message() default "日期格式错误"; String format() default "yyyy-MM-dd"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; }
二、验证逻辑处理类
public class DateFormatValidator implements ConstraintValidator<DateFormat, String> { private DateFormat dateFormat; @Override public void initialize(DateFormat dateFormat) { this.dateFormat = dateFormat; } @Override public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) { String format = dateFormat.format(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); try { simpleDateFormat.parse(s); } catch (Exception e) { return false; } return true; } }
三、自定义注解的应用
public class Tables implements Serializable { private static final long serialVersionUID = -3596411984380984035L; @ApiModelProperty("表名,必须为英文小写") @NotNull(message = "tbName不能为空") private String tbName; @ApiModelProperty("表描述") @NotNull(message = "chineseName不能为空") private String chineseName; @ApiModelProperty("表唯一键") private String uniqueKey; @ApiModelProperty("创建日期") @DateFormat(format = "yyyy-MM-dd",message = "日期格式错误,正确格式为yyyy-MM-dd") private String createDate; }
四、controller层的使用
@PostMapping("addTable") @ApiOperation("增加一个表") public BaseResponse<String> addTable(@Validated @RequestBody Tables tables, BindingResult br) { if (br.hasErrors()) { String defaultMessage = br.getFieldError().getDefaultMessage(); return BaseResultUtils.error(defaultMessage); } else { modelService.createTB(tables); return BaseResultUtils.success(null); } }
五、最终效果
原文地址:https://www.cnblogs.com/wangbin2188/p/15007865.html
- 1131: [POI2008]Sta
- 3172: [Tjoi2013]单词
- WebApiThrottle限流框架使用手册
- webpack学习(六)打包压缩js和css
- 1051: [HAOI2006]受欢迎的牛
- 1572: [Usaco2009 Open]工作安排Job
- 深海中的STL—mt19937
- 探索ASP.NET MVC5系列之~~~4.模型篇---包含模型常用特性和过度提交防御
- POJ1201 Intervals(差分约束)
- 【NLP】十分钟快览自然语言处理学习总结
- MVC5 网站开发之九 网站设置
- Redis安全小结
- webpack学习(七)打包压缩图片
- POJ1275 Cashier Employment(差分约束)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 用python下载哔哩哔哩视频?
- 数据处理|数据查重怎么办?去重,就这么办!
- FFmpeg合并MP4文件
- Broom |tidy up a bit,模型,检验结果一键输出!
- 今日算法题-动态规划法
- 3分钟短文 | PHP获取函数的代码片段,唯有反射最高效!
- ggforce|绘制区域轮廓-区域放大-寻找你的“onepiece”
- 基因矩阵转置文件格式(* .gmt)
- gganimate|创建可视化动图,让你的表会说话
- ggplot2|玩转Manhattan图-你有被要求这么画吗?
- deconstructSigs|探寻cosmic的独特“气质”-mutation signature !
- barplot3d|圣诞节送你一个mutation signature搭建的“乐高”
- R读取gmt文件
- 一个画双层pie图的函数
- DEapp(差异表达分析)本地版——自由飞翔