0

データテーブルから選択したエンティティ オブジェクトを編集するためのフォームを作成しようとしています。したがって、ユーザーがデータテーブルで commandButton をクリックすると、myBean.personプロパティに適切な人物オブジェクトが入力されます。人は「ステータス」プロパティを持っています。

「ステータス」プロパティの値に応じて、さまざまな検証グループで編集フォームを検証したいと思います。これは可能ですか?

2 つの異なる検証グループを作成しました。

 @Entity
    public class Person{
        private String status;
        ...
        @NotNull(message = "{person.null.name}", groups = PersonNew.class)
        private String name;
        @NotNull(message = "{person.null.code}", groups = PersonActive.class)
        private String code;
    }

保存する前にフォームを検証したいのですが、ステータスが「新規」の場合は、nameプロパティを設定する必要があります。ステータスが「アクティブ」の場合、codeプロパティを設定する必要があります。

私はjsfページを持っています:

<h:form id="personEdit">
    <h:inputText value="#{myBean.person.name}" />
    <h:inputText value="#{myBean.person.code}" />
    ... other fields for other properties ...
    <h:commandButton value="Save" action="#{myBean.save}" />
</h:form>

動的に設定された validationGroups 属性を持つタグを使用しようとしまし<f:validateBean />たが、実際の人物オブジェクトが取得される前に、validationGroups を返すメソッドが呼び出されました。Person.statusそのため、物件によっては判断できませんでした。

PersonNewステータスが「新規」の場合は検証グループとして定義し、それ以外の場合は検証グループとして定義できますPersonActiveか?

助けてくれてありがとう。

4

1 に答える 1

0

Hibernate Validator を使用する場合は@GroupSequenceProvider、ニーズを満たす必要があります。

@GroupSequence アノテーションは、標準化された Bean Validation アノテーションです [...] クラスのデフォルト グループ シーケンスを静的に再定義できます。Hibernate Validator は、標準化されていないカスタムのアノテーション (org.hibernate.validator.group.GroupSequenceProvider) も提供します。これにより、デフォルトのグループ シーケンスの動的な再定義が可能になります。

公式マニュアルを参照してください。

于 2011-10-05T16:59:21.473 に答える