javax验证大于或小于来自其他属性的验证
关于javax验证大于或小于来自其他属性的验证,java,validation,javax,Java,Validation,Javax,关于javax.validation @NotNull(message = "From can't be null") @Min(value = 1, message = "From must be greater than zero") private Long from; @NotNull(message = "To can't be null") @Min(value = 1, message = "To must be greater than zero") pr
javax.validation
@NotNull(message = "From can't be null")
@Min(value = 1, message = "From must be greater than zero")
private Long from;
@NotNull(message = "To can't be null")
@Min(value = 1, message = "To must be greater than zero")
private Long to;
我还想验证FROM应该小于到,到应该大于FROM?如何使用javax验证的注释实现这一点?您需要一个自定义的
跨字段验证注释
一种方法是使用@YourCustomAnnotation
注释自定义类
在YourCustomAnnotationValidator
中,您可以访问您的值,因此可以在其中实现您的逻辑:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Constraint(validatedBy = DateValidator.class)
public @interface RangeCheck {
String message();
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
public class RangeCheckValidtor implements ConstraintValidator<RangeCheck, YourDto> {
@Override
public void initialize(RangeCheck date) {
// Nothing here
}
@Override
public boolean isValid(YourDto dto, ConstraintValidatorContext constraintValidatorContext) {
if (dto.getFrom() == null || dto.getTo() == null) {
return true;
}
return from < to;
}
}
或者只需手动验证两个字段的关系。检查上述链接
@RangeCheck(message = "your messgae")
public class YourDto {
// from
// to
}