跨字段验证(JSR 303)问题 [英] Cross field validation (JSR 303) problem
本文介绍了跨字段验证(JSR 303)问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个简单的bean,即:
I have a simple bean, i.e.:
public class MyBean {
private boolean selected;
private String someString;
...
}
因此,如果selected
为true,我希望someString
为@NotNull
等.
So if selected
is true, I want someString
to be @NotNull
etc. .
任何提示,链接如何实现此行为?
Any hints, links how to achieve this behaviour?
谢谢 强尼
推荐答案
您可以通过使用自定义验证器对MyBean
进行注释来实现此目的,例如:
You could do this by annotating MyBean
with a custom validator, for example:
@ValidMyBean
public class MyBean {
private boolean selected;
private String someString;
...
}
ValidMyBean:
ValidMyBean:
@Target({ ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = MyBeanValidator.class)
public @interface ValidMyBean {
boolean allViolationMessages() default true;
Class<?>[] constraints() default {};
Class<?>[] groups() default {};
String message() default "{ValidMyBean.message}";
Class<? extends Payload>[] payload() default {};
}
MyBeanValidator:
MyBeanValidator:
public final class MyBeanValidator implements
ConstraintValidator<ValidMyBean, MyBean> {
@Override
public void initialize(
@SuppressWarnings("unused") final ValidMyBean constraintAnnotation) {
}
@Override
public boolean isValid(final MyBean value,
final ConstraintValidatorContext context) {
boolean isValid = true;
//your validation here
return isValid;
}
}
这篇关于跨字段验证(JSR 303)问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文