0

JEE6 チュートリアル ( http://docs.oracle.com/javaee/6/tutorial/doc/gircz.html ) は、JSR-303 / Bean Validation を入力の検証に使用することを提案しています - または少なくともそれが私の解釈です。

それにもかかわらず、@NotNull などの一部の Bean Validation アノテーションは、インターフェイスの検証レベルではなく、永続化前のレベルでは役に立たない場合があります。

たとえば、次のエンティティについて考えてみます。

public class Registry {

    @NotNull
    String userName;

    @NotNull
    Date createdAt;
}

この場合、ユーザー自身が userName を入力するフォームがあります。しかし、このレジストリが作成された日付をユーザーに知られたくありません。バックエンドにサーバーの現在の日付を設定してもらいたいです。

したがって、通常はこのオブジェクトをページ上のフォームにバインドし、@Valid を使用して JSR-303 検証を実行します。しかし、問題は、Bean 検証によって検証される「createdAt」ではなく、エンティティが Hibernate によって永続化される場合にのみ検証されることです。ただし、Bean Validation を使用すると、両方の属性がフォーム リクエストで検証されます。

これに対処する方法は?JSR-303 はそのようなシナリオで動作するはずですか? 「createdAt」属性のデータベースの null 許容フィールド検証に依存する必要がありますか?

この投稿はほとんど同じ問題に関するものですが、そこにも答えが見つかりませんでした:より効率的な方法のために Web アプリで整理する場所の検証

4

1 に答える 1