2

例から始めましょう:


私のJPAエンティティで

public class User {
    @Pattern("^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$", message="invalidEmailResourceBundleKey")
    private String email;

    @Min(5, message="minimumResourceBundleKey")
    private int age;

...
}

私のJSFBeanで

public class UserBean {
    private User user;

    // do i have to redefine it here, since it's already a part of the user ?
    @@Pattern("^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$") 
    public String getEmail() {
        return user.getEmail();
    }
    public void setEmail(String s) {
        user.setEmail(s);
    }

    // do i have to redefine it here, since it's already a part of the user ?
    @Min(5, message="minimumResourceBundleKey")
    public int getAge() {
        return user.getAge();
    }
    public void setAge(int age) {
        user.setAge(age);
    }
}

メソッド呼び出しをエンティティに実際に委任するJSFBeanのエンティティの検証を再利用できるので、JSF BeanのBean検証を再定義する必要はありませんか?

再利用をリソースバンドル内のエラーメッセージのレベルまで拡張できますか?また、メッセージを通常のように{0}などでパラメータ化できるかどうかを確認できますか?私は何も見つけることができなかったので、これの例がウェブ上にあるかどうか疑問に思います。

これについてのあなたの考えを共有してください..

ありがとうございました !

4

1 に答える 1

7

Beanのプロパティを不必要に平坦化しない限り、それらを再定義する必要はありません。getUser()代わりに持ってください。

public class UserManager {

    private User user;

    public User getUser() {
        return user;
    }

}

そして、JPAエンティティのプロパティに直接バインドします。

<h:inputText value="#{userManager.user.email}" />
<h:inputText value="#{userManager.user.age}" />

具体的な問題とは関係なく、昨年導入された国際化ドメイン名(IDN)の電子メール正規表現は失敗します。ラテン文字だけを受け入れるように正規表現を修正します。例については、この回答も参照してください。

于 2011-03-21T11:45:51.707 に答える