Java/Struts からの ResourceBundle と置換式
-
09-06-2019 - |
質問
リソース バンドル プロパティ ファイルがある場合:
A. プロパティ:
thekey={0} This is a test
そして、リソースバンドルをロードする Java コードがあります。
ResourceBundle labels = ResourceBundle.getBundle("A", currentLocale);
labels.getString("thekey");
{0} テキストを何らかの値に置き換えるにはどうすればよいですか
labels.getString("thekey", "Yes!!!");
出力は次のようになります。
Yes!!! This is a test.
リソース バンドルの一部には、これを行うためのメソッドはありません。また、私はStrutsを使用していますが、MessagePropertiesを使用して置換を行う方法はありますか。
解決
探しているクラスは java.text.MessageFormat です。具体的には、電話をかける
MessageFormat.format("{0} This {1} a test", new Object[] {"Yes!!!", "is"});
または
MessageFormat.format("{0} This {1} a test", "Yes!!!", "is");
戻ります
"Yes!!! This is a test"
[残念ながら、Struts 接続については役に立ちませんが、 これ 関連性があるようです。]
他のヒント
クラスがあります org.apache.struts.util.MessageResources getMessage のさまざまなメソッドを使用すると、実際のメッセージに挿入する引数を受け取るメソッドもあります。
例えば。:
messageResources.getMessage("thekey", "Yes!!!");
所属していません StackOverflow