• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

SpringBoot中@Pattern注解对时间格式校验

java 来源:vachar 8次浏览

      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]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))\\s+([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$"

       我们还需用到@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-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))\\s+([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$")
    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”,就会出现报错,如下所示:

        只有输入正确格式的数据,才能插入成功:


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)