2012-04-03 8 views
0

私は二つの方法で検証 - このコードは、指定されたロケールで文書化し、テキスト必要を抽出するために、正確に行く場所 javax.validation異なるロケールをターゲットにする方法は?

迅速かつ一般的な春のためのカスタム検証とjavax.validationのための春のバリデータを使用するには、きちんと物事を行います。

private Errors checkPasswordMatch(Person p, Errors errors) { 
    if (!p.getPassword().equals(p.getRepeatedPassword())) { 
    errors.rejectValue("password", "person.password.mismatch"); 
    errors.rejectValue("repeatedPassword", "person.password.mismatch"); 
    } 
    return errors; 
} 

のjavaxはあまり面倒ですが、異なる言語でメッセージを生成する方法はありません。

@NotNull 
    @Size(min = 10, max = 10, message = "size must be 10 characters") 
    protected String birthDate; 

方法と同じ方法スプリングがユーザーのロケールに応じないメッセージを抽出するために、いくつかのGB.propertiesまたはUS.propertiesまたはIT.propertiesファイルに行くことのjavaxに助言するには?

答えて

5
@Size(min = 10, max = 10, message = "{birthDate.size}") 
protected String birthDate; 

ValidationMessages.properties(あなたは1を持っていけない場合は、クラスパスに1を作成する)でbirthDate.size = some message

EDIT 1として定義します。区切るファイルを保管してください

。 ValidationMessagesは、アプリ固有のメッセージとは異なり、常にBeanと一緒に出荷/パッケージ化する必要があります。 ValidationMessages.propertiesファイル用にBeanを定義する必要はありません。自動的に選択されます

+0

正しい内容は、「bean validation 1.0 final spec」の「4.3。メッセージ補間」の章を参照してください(http://download.oracle.com/otndocs/jcp/bean_validation-1.0- fr-oth-JSpec /) – Ralph

+0

2つのファイルをどのように組み合わせることができますか?私は\t <豆ID = "messageSource" クラス= "org.springframework.context.support.ReloadableResourceBundleMessageSourceに"> \t \t \t <プロパティ名= "ベース名" 値= "/ WEB-INF /メッセージ" /> \tを使用しているため\t \t \t既に、これらは私に2セットのファイルを与えますか? – Aubergine

+0

上記を参照してくださいedit1 – fmucar

0

よくわかりませんが、javax.validationはよくわかりますが、私はあなたがスローされたValidationExceptionのメッセージを受け取ったと仮定します。

したがって、メッセージの代わりに例外のメッセージキーを定義し、例外/メッセージを表示するときに、対応するリソースバンドル内でルックアップを実行します。

はStruts2のでは、我々はこのような何かをしたい:

@Size(min = 10, max = 10, message = "size.exact.10") 
    protected String birthDate; 

    //in the JSP display the message: 
    <s:text name="%{exception.message}"/> 

を私はあなたが似た何かをすることができると思います。

関連する問題