验证器错误排序

时间:2012-09-13 15:49:32

标签: validation bean-validation hibernate-validator

我想要实现的是有序的错误消息。提供以下bean类

public class DummyBean{

    @NotNull
    public String firstName;

    @NotNull
    public String lastName;
}

并使用LocalValidatorFactoryBean这样:

private Validator validator;

@Autowired
public DummyController(Validator validator) {
    this.validator = validator;
}

public void validate(DummyBean bean){
    Map<String, String> failureMessages = new LinkedHashMap<String, String>();

    for (ConstraintViolation<DummyBean> failure : validator.validate(bean)) {
        failureMessages.put(failure.getPropertyPath().toString(), failure.getMessage());
    }
}

如何确保与属性“firstName”相关的错误消息始终首先与“lastName”相关?

Afaik只有团体序列可以订购,但我希望有人可能已经遇到过这个问题

1 个答案:

答案 0 :(得分:1)

您是对的,如果您想强制执行订单,则需要使用组序列。但是,在这种情况下,一旦发生约束违规,验证就会停止。这意味着在这种情况下,您永远不会因 firstName lastName 而违反约束。

还要考虑您是否收到了 Set 违规行为,而且没有一套保证的迭代顺序。