第112章 Mustache
Mustache リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.12 以降で利用可能
Maven ユーザーは、このコンポーネントの
pom.xml に以下の依存関係を追加する必要があります。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
mustache:templateName[?options]
mustache:templateName[?options]
templateName は、呼び出すテンプレートのクラスパスローカル URI、またはリモートテンプレートの完全な URL (例:file://folder/myfile.mustache)です。
URI にクエリーオプションは
?option=value&option=value&.. の形式で追加できます。
オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
| オプション | デフォルト | 説明 |
|---|---|---|
allowContextMapAll (producer)
|
false
|
コンテキストマップが前詳細へのアクセスを許可するかどうかを設定します。デフォルトでは、メッセージの本文とヘッダーにのみアクセスできます。このオプションは、現在の Exchange および CamelContext へのフルアクセスに対して有効にできます。これを行うと、CamelContext API の全機能へのアクセスが開かれるため、潜在的なセキュリティーリスクが発生します。
|
allowTemplateFromHeader (producer)
|
false
|
ヘッダーのリソーステンプレートの使用を許可するかどうか (デフォルトは false)。このオプションを有効にすると、セキュリティーの問題があります。たとえば、ヘッダーに信頼されていないコンテンツやユーザー派生コンテンツが含まれている場合、これは最終的にエンドアプリケーションの信頼性および完全性に影響を与える可能性があるため、このオプションは注意して使用してください。
|
encoding
|
null
|
リソースコンテンツの文字エンコーディング。 |
startDelimiter
|
{{ | テンプレートコードの開始を示すために使用される文字。 |
endDelimiter
|
}} | テンプレートコードの終わりのマークに使用される文字。 |
Mustache コンテキスト リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel は Mustache コンテキストでエクスチェンジ情報を提供します(マップのみ
)。Exchange は以下のように転送されます。
| key | value |
|---|---|
exchange
|
Exchange 自体。
|
exchange.properties
|
Exchange プロパティー。
|
ヘッダー
|
In メッセージのヘッダー。 |
camelContext
|
Camel コンテキスト。 |
request
|
In メッセージ。 |
ボディー
|
In メッセージのボディー。 |
response
|
Out メッセージ(InOut メッセージ交換パターンにのみ有効)。 |
動的テンプレート リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel は 2 つのヘッダーを提供し、テンプレートまたはテンプレートコンテンツ自体に異なるリソースの場所を定義できます。これらのヘッダーのいずれかが設定されている場合、Camel は設定されたエンドポイントでこれを使用します。これにより、ランタイム時に動的テンプレートを指定できます。
| ヘッダー | タイプ | 説明 | サポートバージョン |
|---|---|---|---|
| MustacheConstants.MUSTACHE_RESOURCE_URI | 文字列 | 設定されたエンドポイントの代わりに使用するテンプレートリソースの URI。 | |
| MustacheConstants.MUSTACHE_TEMPLATE | 文字列 | 設定されたエンドポイントの代わりに使用するテンプレート。 |
サンプル リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
たとえば、以下のように使用できます。
from("activemq:My.Queue").
to("mustache:com/acme/MyResponse.mustache");
from("activemq:My.Queue").
to("mustache:com/acme/MyResponse.mustache");
Mustache テンプレートを使用して InOut メッセージエクスチェンジ(
JMSReplyTo ヘッダーがある)のメッセージの応答を形成。
InOnly を使用してメッセージを消費し、別の宛先に送信する場合は、以下を使用します。
from("activemq:My.Queue").
to("mustache:com/acme/MyResponse.mustache").
to("activemq:Another.Queue");
from("activemq:My.Queue").
to("mustache:com/acme/MyResponse.mustache").
to("activemq:Another.Queue");
以下のように、ヘッダーを介してコンポーネントを動的に使用するテンプレートを指定できます。
from("direct:in").
setHeader(MustacheConstants.MUSTACHE_RESOURCE_URI).constant("path/to/my/template.mustache").
to("mustache:dummy?allowTemplateFromHeader=true");
from("direct:in").
setHeader(MustacheConstants.MUSTACHE_RESOURCE_URI).constant("path/to/my/template.mustache").
to("mustache:dummy?allowTemplateFromHeader=true");
警告
allowTemplateFromHeader オプションを有効にすると、セキュリティーの問題があります。たとえば、ヘッダーに信頼できないコンテンツまたはユーザー派生コンテンツが含まれる場合、これは最終的に、エンドアプリケーションの確実性と整合性に及ぼす可能性があるため、このオプションを使用してください。
電子メールのサンプル リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
この例では、注文確認メールに Mustache テンプレートを使用します。メールテンプレートは、以下のように Mustache に記載されています。