如何在某些情况下允许忽略javax.validation

时间:2012-10-18 23:01:20

标签: java hibernate validation

给出以下课程

public class Website {

    @NotNull
    String owner:

    @ValidUrl
    String url;

}

当我们验证(例如使用@Valid)并且如果Website.url不遵守我的自定义@ValidUrl约束时,我们将获得约束违规(例如“url is unreachable”)。

我想知道如果用户愿意,是否可以忽略该验证。

步骤:

  1. 第一次验证表格
  2. 抛出约束违规并将其显示给用户
  3. 用户选择“我知道,无论如何添加”并重新提交
  4. 第二次验证表格,验证除@ValidUrl以外的所有内容

2 个答案:

答案 0 :(得分:8)

您可以结合使用validation groupsprogrammatic validatio n。

来完成此操作

答案 1 :(得分:0)

这是从一组违规中删除违规的方法。

public static <T> Set<ConstraintViolation<T>> removeViolation(final Set<ConstraintViolation<T>> constraintViolations, final String propertyName, final Class annotationClass) {
    return constraintViolations.stream().filter(p ->
            !(((NodeImpl) (((PathImpl) (p.getPropertyPath())).getLeafNode())).getName().equals(propertyName))
                    || !((ConstraintDescriptorImpl) p.getConstraintDescriptor()).getAnnotationType().getSimpleName().equals(annotationClass.getSimpleName()))
            .collect(Collectors.toSet());
}