SpringBoot中@Pattern注解对时间格式校验
1.需求背景
有⼀个需求,在前端传过来的时间格式的字符串进⾏校验,是否符合"yyyy-MM-dd HH:mm:ss",在SpringBoot中当然可以⽤
@Datetimeformat注解来进⾏验证,但字段的属性得⽤Date类型,由于我的项⽬中该字段⽤了String类型,需要对类型进⾏转换不太符合
要求,所有⽤到了@Pattern注解。
在实体类的字段名上添加@Pattern注解,有个属性regexp,该属性的值就是正则表达式。
"yyyy-MM-dd HH:mm:ss"的正则表达式如下:
"^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]时间正则表达式java
我们还需⽤到@Validated注解,该注解使⽤在controller层的⽅法参数中,只有使⽤该注解,@pattern中的时间格式校验才起作⽤,
这⼀点尤其重要。
2.实现案例
entity:
//删除时间
@Pattern(regexp = "^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-    private String deletedAt;
controller:
/**
* 添加设备类别
*/
@ApiOperation(value = "添加设备类别",notes="传⼊参数是category对象")
@PostMapping("/category")
public int addCategory(@Validated Category category){
return iCategory.addCategory(category);
}
测试结果:
当输⼊的时间为2020-08-26或2020/08/26 11:22:33,时间格式不符合"yyyy-MM-dd HH:mm:ss",就会出现报错,如下所⽰:
只有输⼊正确格式的数据,才能插⼊成功:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。