问题描述
我有一个类X
,该类具有三个字段:state
(A
和B
的枚举),a
和{{1 }}。
当b
为state
时,A
不得为a
,当null
为state
时,B
不得为{{ 1}}。
b
使用hibernate-validator,我构建了以下验证器:
null
因此,每当验证失败时,我都会收到消息@ValidateCondition(message = "Validation Failed")
public class X {
private State state;
private String a;
private String b;
}
,但是我想要的只是一条消息,告诉我为什么失败,例如@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = MyValidator.class)
@Documented
public @interface ValidateCondition {
String message() default "ValidateCondition Failed";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
public class MyValidator implements ConstraintValidator<ValidateCondition,X> {
@Override
public boolean isValid(X x,ConstraintValidatorContext context) {
if(x.getState()==State.A){
return x.getA() != null;
}
if(x.getState()==State.B){
return x.getB() != null;
}
}
}
。
我假设我可以以某种方式使用Validation Failed
,但我不知道是否或如何。
解决方法
这很简单: 只需在isValid区域内调用上下文:
import '@aws-amplify/ui/dist/style.css';
享受!