使用javax.validation进行复杂的Spring表单验证

时间:2012-10-22 01:28:28

标签: spring validation spring-mvc bean-validation

我想要完成的是:

验证bean支持的表单,例如使用以下类

public class PersonForm {

    @NotNull
    String name;

    List<Long> interests;

    // This attribute is not filled out in the form
    List<Interest> realInterests;
}

因此,“名称”和“兴趣”来自网络表单。 “name”有一些约束(NotNull),并且使用@Valid会做它应该做的事情。

“兴趣”是一份兴趣ID列表。

在对“名称”进行初步验证后,我填写了List集合。

@CustomValidInterest
public class Interest {

    Long id;
    String name;
    boolean available;

}

之后我想验证这个结构。 “@CustomValidInterest”是一个自定义验证注释。 我可以使用验证组执行两阶段验证。

问题是,如果某些“兴趣”对象无效,我想将错误消息与“兴趣”字段(列表&lt; Long&gt;类型)相关联,因此当我检索表单错误时,错误与正确的领域。

也许我正试图以错误的方式使用验证。我试图避免进行一系列程序化比较,手动填充错误。

1 个答案:

答案 0 :(得分:0)

回答我自己的问题,使用PropertyEditors可以实现这一点。表单可能会返回List&lt;长&gt;但是表单对象只能有一个List&lt;兴趣&gt;这是使用所述Property mapper构建的。之后,该列表上的@Valid应验证“兴趣”强制执行的任何约束。