4

アクションクラスで検出されたエラーを表示したいので、次を使用します。

errors.add(ActionErrors.GLOBAL_MESSAGE,
  new ActionMessage("some_string_in_properties_file"));`

そしてそれはうまくいきます。ただし、いくつかの一般的なエラーメッセージを書いており、それらを再利用したいので、これをやろうとしています:

errors.add(ActionErrors.GLOBAL_MESSAGE,
  new ActionMessage("string1_in_properties_file", "string2_in_properties_file"));

ここで、string1 = <li>{0} is required.</li>.

すると表示されstring2 is requiredます。string2 をその値に置き換えていません。

私も試してみました

errors.add(ActionErrors.GLOBAL_MESSAGE,
  new ActionMessage("string1_in_properties_file",
  new ActionMessage("string2_in_properties_file")));

それは表示されていstring2[] is requiredます。string2 を置き換えるものではありません。

値をハードコーディングすることでできることは知っていますが、他に方法はありますか?

4

4 に答える 4

2

プロパティ ファイルから 2 つのキーの値を取得し、それをグローバル エラー キーに入れたいので、次を使用して各値を個別に取得します。

String sValue1 = getResources(request).getMessage(locale, "key1");
String sValue2 = getResources(request).getMessage(locale, "key2");

そしてそれをあなたのグローバルエラーに入れてください

errors.add(ActionErrors.GLOBAL_MESSAGE,sValue1+"<br/>"+sValue2);

それが役立つことを願っています....

于 2012-01-19T05:21:05.013 に答える
0

errorsOは背後のコードを知らないので、何をすべきかを正確に伝えるのは難しいですActionMessage。ただし、を使用することはできますString.format。コードは次のようになります

public class ActionErrors {
    public static final String INVALID_INPUT "'%s' is not valid input.";
    ...
}

String input = "Cats";
String message = String.format(ActionErrors.INVALID_INPUT, input);
System.out.println(message);

上記は印刷されます

「猫」は有効な入力ではありません。

于 2012-01-18T14:37:51.193 に答える
0

次のように、メッセージのいくつかのキーを定義するプロパティ ファイルがあるとします。

string1: <li>{0} is required.</li>
string2: Username

ActionMessage クラスには、さまざまな数の引数を取る多数のコンストラクターがあります。1 つ目は、メッセージを参照するキーを表す文字列です。この場合、キーはstring1メッセージに対応するものです<li>{0} is required.</li>。一部の{0}動的コンテンツのプレースホルダーです。

残りの可能な引数は、これらのプレースホルダーを置き換える実際の値を表すオブジェクトです。その場合new ActionMessage("string1", "string2")、リテラル値を渡しているstring2ため、出力は<li>string2 is required.</li>.

あなたがする必要がある"string2"のは、 key に対応する値を取得するメソッド呼び出しに置き換えることstring2です。ただし、これは問題に関する私の知識が尽きるところであるため、この部分については自分で調査する必要があります。

于 2012-01-18T15:42:19.263 に答える
0

Struts ActionMessageでは、次のように、プロパティ ファイルで指定されたパラメータ、 、 の値を指定でき{0}ます{1}{2}{3}

errors.add(ActionErrors.GLOBAL_MESSAGE,
  new ActionMessage("some_string_in_properties_file", "value1"));

別の方法:

errors.add(ActionErrors.GLOBAL_MESSAGE,
  new ActionMessage("some_string_in_properties_file", "value1", "value2", "value3"));

value1..value3任意の型にすることができます (Struts は を想定しているためObject)。

あなたの財産:

string1 = <li>{0} is required.</li>

Will be replaced to:

<li>value1 is required.</li>

(キーを として指定した場合string1)。

于 2012-01-18T14:52:20.143 に答える