2

私が持っているのは、以下のプロパティファイルです。

ウェルカム プロパティ

admin = Admin
welcomeAdmin = Welcome Admin
editAdmin = Edit Admin

管理者の言葉を繰り返したので、以下のようなものを使いたいです。

admin = Admin
welcomeAdmin = Welcome #{admin}
editAdmin = Edit #{admin}

そのため、1 つの場所、つまり で変更するとadmin = Admin、すべての場所が反映されます。

これを行う方法についてのアイデア/提案をいただければ幸いです。

4

1 に答える 1

0

今日のように、クラシックResourceBundleクラスは名前付きパラメーターとその置換をサポートしていませんが{0}、バンドルのキーと値のペアでタイプの単純なプレースホルダーをサポートしていますMessageFormat#format

この観点から、次のいずれかを使用して、求める機能を実現Welcome #{admin}するWelcome {0}ことができます。

  1. JSFの<h:outputFormat>

    <h:outputFormat value="#{msg.welcomeAdmin}">
        <f:param value="#{msg.admin}" />
    </h:outputFormat>
    
  2. JSTL の<fmt:message>:

    <fmt:message key="msg.welcomeAdmin">
        <fmt:param value="#{msg.admin}">
    </fmt:message>
    

独自の EL 関数、タグ ハンドラー、または UI コンポーネントを作成MessageFormatしたり、Bean でクラス メソッドを使用したりすることもできます。もちろん、ResourceBundleクラスを拡張して名前付きパラメーターをサポートし、名前付きパラメーターを既に含むメッセージを返すこともできます。解析されました。

推奨読書

  1. Java のリソースバンドルはランタイム文字列置換をサポートしていますか? ;
  2. JSF コンポーネントの非値属性で Parameterized MessageFormat を使用する方法
  3. リソース バンドルから h:outputFormat 以外のコンポーネントへのメッセージにパラメーターを渡します
于 2013-03-24T16:34:21.297 に答える