-タグインジェクション

MayaがJSPカスタムタグをHTMLテンプレートに組み込む動作を、DIコンテナ(Dependency Injection Container)に習い、「インジェクション」と呼ぶことにします。Hello MayaサンプルではMaya設定XML([list.3] hello.maya)中の以下の部分でインジェクションの指定を行っています。
<tag id="message" inject="c:out">
tagエレメントはタグのインジェクション動作に一対一対応で記述されます。属性idがタグの識別子、injectがインジェクションの情報を指定するMayaで最も重要な属性です。id属性はアプリケーション任意の名前で、同一テンプレート内でユニークなことが求められます。サンプルでは「message」という名前をつけています。inject属性は、インジェクションするJSPカスタムタグ名を記述します。記述方法は、JSPタグライブラリプレフィックス+「:」+JSPカスタムタグ名としてください。サンプルではプレフィックスが「c」、タグ名が「out」なので、「c:out」となっています。
<span id="message">さようなら</span>
一方、HTMLテンプレート中([list.2] hello.html)では上記のように記述しています。Maya設定XMLのtagエレメントと同様、id属性を記述していますが、こちらのid属性はHTML標準のものです。Mayaは設定XML中にtagエレメントを見つけると、そのid属性に指定されたタグ識別子と同じ値をid属性に持つ、HTMLテンプレート中の任意のタグをインジェクションのホストとすべく検索し、Maya設定XMLに記述するinject属性が値指定したJSPカスタムタグに置き換えます。サンプルではインジェクションホストにHTMLのspanタグを用いていますが、タグ種は任意です。インジェクションホストとなったHTMLテンプレート中のタグは、プレビュー時のためのものと理解していただいてかまいません。
HTMLテンプレートのみでインジェクトを行う場合には、インジェクションホスト中にinject属性も記述します([list.5] hello2.html)。
<span inject="c:out" value="#{ helloModel.greeting }">
サンプルではid属性が省略されています。ひとつのファイルにすべての情報を盛り込んだために、HTMLテンプレート中のインジェクションホストとMaya設定XML中のインジェクション情報の対応を記述しなくても良くなったため、省略が可能です。