验证休眠日期只要
Validate hibernate date as long
我想验证 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
有关更详细的说明和示例项目,请查看此 post,其中详细介绍了该主题 - Adding custom constraint definitions via the Java service loader
我想验证 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
有关更详细的说明和示例项目,请查看此 post,其中详细介绍了该主题 - Adding custom constraint definitions via the Java service loader