25

Java アプリケーションのプロパティでプレースホルダーを動的に置き換えたいと考えました。お気に入り

 WelcomeMessage=Welcome Mr. {firstName} {lastName} !!!

これらの firstName および LastName 変数は、動的に置換する必要があります。同じために速度テンプレート エンジンを使用する必要がありますか? または、同じための他のオープンソース フレームワークはありますか?

ありがとう、マニッシュ

4

6 に答える 6

53

Java SEのMessageFormatクラスを使用できます。それはあなたが求めることを正確に行うことを可能にします。

あなたの場合、ファイルからロードされたすべてのプロパティが props に含まれていると仮定すると、以下のコード スニペットがそのトリックを実行する必要があります。

MessageFormat.format((String) props.get("WelcomeMessage"), "First", "Last");

以下のように、プロパティ ファイルには名前付きパラメーターではなく、パラメーターのインデックスが必要であることに注意してください。

WelcomeMessage=Welcome Mr. {0} {1} !!!
于 2010-02-05T07:38:14.020 に答える
6

私の意見では、速度はかなり古くて不快です。これを行うためのより良い方法があります。

  • StringTemplateは最も単純なテンプレート エンジンであり、必要なものを十分に満たしています (構文例はこちらを参照してください)。
  • すでに Spring 3 を使用している場合は、これも実行できるPropertyPlaceholderHelperクラスがありますが、この 1 つのクラスを取得するためだけに Spring を使用することはありません。
于 2010-02-05T08:24:37.123 に答える
0

JSF 2 を使用する Java Web アプリケーションでは、次のように動作します。

src\main\webapp\WEB-INF\faces-config.xml

...
    <resource-bundle>
      <base-name>com.mycompany.resources.messages</base-name>
      <var>mytext</var>
    </resource-bundle>
...

src\main\resources\com\mycompany\resources\messages\mytext.properties

WelcomeMessage = Welcome Mr. {0} {1} !!!

index.xhtml

<h:outputFormat value="#{mytext.WelcomeMessage}" >          
  <f:param value="#{userSessionBean.first}" />
  <f:param value="#{userSessionBean.last}" />
</h:outputFormat>
于 2014-05-03T21:54:10.823 に答える
0

速度は現時点で最高のツールです。ただし、テンプレートとして使用するファイルの種類によって異なります。

たとえば、MS Word ドキュメントをテンプレートとして使用する場合は、速度クラスを拡張して独自の実装を作成する必要があります。

于 2010-02-05T07:34:13.200 に答える