3

给定以下课程

public class Website {

    @NotNull
    String owner:

    @ValidUrl
    String url;

}

当我们验证这一点(例如使用@Valid)并且如果Website.url 不遵守我的自定义@ValidUrl 约束,我们将得到一个约束违规(例如“url 无法访问”)。

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

脚步:

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

2 回答 2

10

您可以通过结合使用验证组编程验证来做到这一点。

于 2012-10-18T23:20:56.967 回答
2

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

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());
}
于 2019-02-25T07:44:39.397 回答