第112章 Mustache


Mustache

Camel 2.12 以降で利用可能
mustache: コンポーネントは Mustache テンプレートを使用してメッセージを処理できるようにします。これは、Templating を使用してリクエストの応答を生成する場合に理想的です。
Maven ユーザーは、このコンポーネントの pom.xml に以下の依存関係を追加する必要があります。
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-mustache</artifactId>
<version>x.x.x</version> <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

URI 形式

mustache:templateName[?options]
Copy to Clipboard Toggle word wrap
templateName は、呼び出すテンプレートのクラスパスローカル URI、またはリモートテンプレートの完全な URL (例:file://folder/myfile.mustache)です。
URI にクエリーオプションは ?option=value&option=value&.. の形式で追加できます。

オプション

Expand
オプション デフォルト 説明
allowContextMapAll (producer)
false
コンテキストマップが前詳細へのアクセスを許可するかどうかを設定します。デフォルトでは、メッセージの本文とヘッダーにのみアクセスできます。このオプションは、現在の Exchange および CamelContext へのフルアクセスに対して有効にできます。これを行うと、CamelContext API の全機能へのアクセスが開かれるため、潜在的なセキュリティーリスクが発生します。
allowTemplateFromHeader (producer)
false
ヘッダーのリソーステンプレートの使用を許可するかどうか (デフォルトは false)。このオプションを有効にすると、セキュリティーの問題があります。たとえば、ヘッダーに信頼されていないコンテンツやユーザー派生コンテンツが含まれている場合、これは最終的にエンドアプリケーションの信頼性および完全性に影響を与える可能性があるため、このオプションは注意して使用してください。
encoding null リソースコンテンツの文字エンコーディング。
startDelimiter {{ テンプレートコードの開始を示すために使用される文字。
endDelimiter }} テンプレートコードの終わりのマークに使用される文字。

Mustache コンテキスト

Camel は Mustache コンテキストでエクスチェンジ情報を提供します(マップのみ Exchange は以下のように転送されます。
Expand
key value
exchange Exchange 自体。
exchange.properties Exchange プロパティー。
ヘッダー In メッセージのヘッダー。
camelContext Camel コンテキスト。
request In メッセージ。
ボディー In メッセージのボディー。
response Out メッセージ(InOut メッセージ交換パターンにのみ有効)。

動的テンプレート

Camel は 2 つのヘッダーを提供し、テンプレートまたはテンプレートコンテンツ自体に異なるリソースの場所を定義できます。これらのヘッダーのいずれかが設定されている場合、Camel は設定されたエンドポイントでこれを使用します。これにより、ランタイム時に動的テンプレートを指定できます。
Expand
ヘッダー タイプ 説明 サポートバージョン
MustacheConstants.MUSTACHE_RESOURCE_URI 文字列 設定されたエンドポイントの代わりに使用するテンプレートリソースの URI。
MustacheConstants.MUSTACHE_TEMPLATE 文字列 設定されたエンドポイントの代わりに使用するテンプレート。

サンプル

たとえば、以下のように使用できます。
from("activemq:My.Queue").
to("mustache:com/acme/MyResponse.mustache");
Copy to Clipboard Toggle word wrap
Mustache テンプレートを使用して InOut メッセージエクスチェンジ( JMSReplyTo ヘッダーがある)のメッセージの応答を形成。
InOnly を使用してメッセージを消費し、別の宛先に送信する場合は、以下を使用します。
from("activemq:My.Queue").
to("mustache:com/acme/MyResponse.mustache").
to("activemq:Another.Queue");
Copy to Clipboard Toggle word wrap
以下のように、ヘッダーを介してコンポーネントを動的に使用するテンプレートを指定できます。
from("direct:in").
setHeader(MustacheConstants.MUSTACHE_RESOURCE_URI).constant("path/to/my/template.mustache").
to("mustache:dummy?allowTemplateFromHeader=true");
Copy to Clipboard Toggle word wrap
警告
allowTemplateFromHeader オプションを有効にすると、セキュリティーの問題があります。たとえば、ヘッダーに信頼できないコンテンツまたはユーザー派生コンテンツが含まれる場合、これは最終的に、エンドアプリケーションの確実性と整合性に及ぼす可能性があるため、このオプションを使用してください。

電子メールのサンプル

この例では、注文確認メールに Mustache テンプレートを使用します。メールテンプレートは、以下のように Mustache に記載されています。
Dear {{headers.lastName}}}, {{headers.firstName}}

Thanks for the order of {{headers.item}}.

Regards Camel Riders Bookstore
{{body}}
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat