微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

验证休眠日期一样长

如何解决验证休眠日期一样长

我想验证 Long 类型的日期是否大于当前时间。
我见过 @Past@Future 等等......但它不适用于 Long 数据类型。

我正在寻找这样的东西:

@FutureOrPresent
private Long dateStart;
@Future
private Long dateEnd;

但适用于 Long 值。

如何验证 date > System.currentTimeMillis()

提前致谢。

解决方法

如果您想使用现有的约束注释,但不支持要应用它们的类型(在您的情况下为 Long),您需要:

创建您自己的 ConstraintValidator 实现,例如:

public class FutureLongValidator implements ConstraintValidator<Future,Long> { 
    public boolean isValid(Long value,ConstraintValidatorContext context) {
        if ( value == null ) {
            return true;
        }
        return value > System.currentTimeMillis();
    }
}

然后注册它,以便 HV 知道它并可以使用它进行验证。有几种方法可以做到这一点。我建议使用 ServiceLoader 方法。为此,必须创建文件 META-INF/services/javax.validation.ConstraintValidator 并将验证器的完全限定名称添加到其中:

some.package.FutureLongValidator
some.package.FutureOrPresentLongValidator

有关更详细的说明和示例项目,请查看这篇文章,其中详细介绍了该主题 - Adding custom constraint definitions via the Java service loader

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。