1

Springs アノテーション ベースのフォーム検証 (主に @NotBlank と @Length) を使用しています。次のようにフォームビーンを検証メソッドに渡します。

validate(formBean, result);

さまざまなフォームフィールドにいくつかの注釈が添付されており、1 つとは別に期待どおりに検証されています。

フォーム Bean の私のフィールドの 1 つは、次のように宣言されています。

private EntriesBean entries;

このフィールドは明らかに、通常のゲッターとセッターを持つ Bean を参照します。この Bean 内のいくつかのフィールドにも検証アノテーションが添付されていますが、他のフィールドのように validate() メソッド呼び出しの一部として検証されません。これは、この Bean が validate() を呼び出すメソッドから直接ではなく、別の Bean から参照されていることに関係していますか?

ありがとう

4

2 に答える 2

0

この方法で「エントリ」フィールドを検証できます。

@Valid
private EntriesBean entries;

これにより、Hibernate バリデーターがその Bean の検証をカスケードします。

于 2012-06-26T17:13:04.607 に答える
0

私自身の質問に答えました。

非常に長いドキュメントを読むと、これを行う方法は、BindingResult オブジェクトの pushNestedPath() および popNestedPath() メソッドを次のように使用することであることがわかります。

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

この方法はかなり面倒に見えるので好きではありませんが、機能します。

于 2012-06-27T10:12:44.107 に答える