跨字段验证(JSR 303)问题 [英] Cross field validation (JSR 303) problem

查看:64
本文介绍了跨字段验证(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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆