javascript
java注解定义时间格式-ag凯发k8国际
1 概述
javax.validation包与hibernate-validator包中注解能满足大部分需求,但是还是有必要熟悉下自定义数据验证注解,如日期格式验证。
2 添加依赖
org.springframework.boot
spring-boot-starter-web
org.projectlombok
lombok
1.16.20
provided
3 自定义注解
定义一个@datetime注解
@target({elementtype.field, elementtype.parameter})
@retention(retentionpolicy.runtime)
@constraint(validatedby = datetimevalidator.class)
public @interface datetime {
string message() default "格式错误";
string format() default "yyyymm";
class>[] groups() default {};
class extends payload>[] payload() default {};
}
@constraint,指定校验类
message,失败提示信息
groups,分组验证(后面介绍)
payload,不知道,欢迎留言探讨
4 实现具体验证类
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 为空则不进行格式验证,为空验证可以使用 @notblank @notnull @notempty 等注解来进行控制,职责分离
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;
}
}
实现constraintvalidator接口,定义initialize和isvalid方法。
initialize,主要用于初始化,它可以获得当前注解的所有属性
isvalid,进行约束验证的主体方法,其中 value 就是验证参数的具体实例,context 代表约束执行的上下文环境。
5 实体类
@data
public class user {
@notnull(message = "名字不能为空")
@length(min = 4, max = 10, message = "name 长度必须在 {min} - {max} 之间")
private string name;
@notnull(message = "生日不能为空")
@datetime(format = "yyyymmdd", message = "格式错误,正确格式为: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 测试结果
8 工程目录
9 结束语
说点什么呢,有任何建议,欢迎留言探讨,本文源码。
欢迎关注博主公众号,第一时间推送最新文章
总结
以上是ag凯发k8国际为你收集整理的java注解定义时间格式_springboot基础教程2-1-8 数据验证-自定义日期格式验证的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: java mcrypt encrypt_
- 下一篇: java静态类和非静态类_关于java: