1

同じ検証制約を使用する多くの jsf2 Web プロジェクトがあります。

  1. これらすべての制約を共有ライブラリに入れることはできますか?
  2. はいの場合、検証メッセージの翻訳を提供できますか?
  3. はいの場合、どうすれば標準的な方法でそれを達成できますか?
  4. 次のパッケージ構造は正しいですか?

commons.jar ライブラリ:

commons.jar
    |
    + library
    |   |
    |   + CustomConstraint1.class
    |   + CustomConstraint2.class
    |
    + ValidationMessages_it.properties
    + ValidationMessages_en.properties
    + ValidationMessages_de.properties
4

2 に答える 2

3
  1. これらすべての制約を共有ライブラリに入れることはできますか?

はい、できます。

  1. はいの場合、検証メッセージの翻訳を提供できますか?

はい、これも可能です。

  1. はいの場合、どうすれば標準的な方法でそれを達成できますか?

たとえば、次のような制約があります。

package com.example.constraints;

@Target({
        ElementType.FIELD,
        ElementType.PARAMETER,
        ElementType.METHOD
})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {
    FooValidator.class
})
public @interface Foo
{
    String message() default "{com.example.constraints.Foo.message}";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}

ValidationMessages.propertiesクラスパスのルートにa を指定します (アプリケーションのデフォルト言語用)。追加のロケールについては、ValidationMessages_[locale].propertiesファイルを指定する必要があります。オランダ語ロケールの場合はValidationMessages_nl.properties.

次に、これらのファイルで、メッセージ変数をキーとして定義し、メッセージを値として次のように定義します。

com.example.constraints.Foo.message=Foo is not valid
于 2012-07-27T11:22:49.090 に答える
2

あなたのバンドルは、スタンドアロンの jar に適しています。この jar を、クラスパスのルートに独自の制約と ValidationMessages.properties を使用して ear/war にドロップすると、機能しません。

于 2012-07-28T15:06:33.230 に答える