基于Spring注释的表单验证

时间:2012-06-26 15:39:46

标签: java spring validation spring-mvc annotations

我正在使用基于Spring注释的表单验证(主要是@NotBlank和@Length),效果很好。我正在将formbean传递给验证方法,如下所示:

validate(formBean, result);

我有几个注释附加到各种表单字段,这些表单字段除了一个之外还按预期进行验证。

表单bean中的一个字段声明如下:

private EntriesBean entries;

这个字段显然是指一个有通常的getter和setter的bean。此bean中的一些字段也附加了验证注释,但它们不像其他字段那样验证为validate()方法调用的一部分。这与从另一个bean引用的bean有关,而不是直接从调用validate()的方法引用吗?

由于

2 个答案:

答案 0 :(得分:0)

您可以通过以下方式验证“条目”字段:

@Valid
private EntriesBean entries;

这将使Hibernate验证器级联该bean中的验证

答案 1 :(得分:0)

回答了我自己的问题。

阅读非常冗长的文档我可以看到这样做的方法是使用BindingResult对象的pushNestedPath()和popNestedPath()方法,如下所示:

    result.pushNestedPath("entries");
    validator.validate(form.getEntries(), result);
    result.popNestedPath();

我不喜欢这种做法,因为它看起来很乱,但它有效,看来