2

私は Struts 2 を使用しており、見つけたチュートリアルに従って簡単なアプリケーションを作成しました。

ファイルを作成しましたが、<MyActionClass>-validation.xml複数の言語に基づいて検証メッセージを表示するにはどうすればよいでしょうか?

<field name="password">
    <field-validator type="requiredstring">
        <param name="trim">true</param>
        <message>You have to enter a password.</message> 
    </field-validator>
</field>

ローカライズされた.propertiesファイルからメッセージを取得できますか、それとも他の種類の検証を使用する必要がありますか?

すべてのロケールに検証 XML ファイルが必要ですか?

4

4 に答える 4

2

メッセージは、keyローカライズされたプロパティから取得されます。検証のために重複したコードを記述する必要はありません。例えば

<validators>
   <validator type="requiredstring">
     <param name="fieldname">field.name</param>
     <message key="field.key"/>
   </validator>
</validators>

または注釈を使用する

private String name;

@RequiredStringValidator(key = "field.key")
public void setName(String name) {
  this.name = name;
}

field.nameはフィールド ラベルのリソース キーで、field.keyはエラー メッセージのキーです。

あなたが書くプロパティで

field.name=MyName 
field.key=MyName required

それはローカライズされています。

メッセージは、ユーザー ブラウザーのロケール設定に応じて、またはブラウザー設定とは無関係にI18N インターセプターrequest_localeによってロケールを設定するパラメーターを介して自動的に取得されます。したがって、スタックにあることを確認してください。

于 2013-03-19T09:58:10.490 に答える
0

メソッドを使用getTextして、プロパティファイルからメッセージを取得します。

<message>${getText("enter.password")}</message>

http://struts.apache.org/development/2.x/docs/validation.html#Validation-LocalizingandParameterizingMessagesを参照してください。

于 2013-03-19T09:18:56.287 に答える
0

はい、プロパティ ファイルからローカライズされたメッセージを取得できます。また、ロケール固有のメッセージに validation.xml は必要ありません。

拡張子 .properties の異なるロケール ファイルに過ぎない ResourceBundle を指定する必要があります。

于 2013-03-21T13:21:29.157 に答える
0

<message key="key_name"/>あなたの中で使うだけActionClass-validation.xml

次に、で定義key_nameします

global.properties
global_vn.properties

request_localeスタックにあることを確認してください。

于 2014-06-21T07:04:16.727 に答える