首页 文章

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

提问于
浏览
0

我想要完成的是:

正在验证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”是一个自定义验证注释 . 我可以使用验证组执行两阶段验证 .

问题是,如果某些“兴趣”对象无效,我想将错误消息与“兴趣”字段(List <Long>类型)相关联,因此当我检索表单错误时,错误与正确的字段相关联 .

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

1 回答

  • 0

    回答我自己的问题,这是可以使用PropertyEditors实现的 . 表单可能返回List <Long>,但表单对象只能有一个List <Interest>,它是使用所述Property mapper构建的 . 之后,该列表上的@Valid应验证"Interest"强制执行的任何约束 .

相关问题