-Beanバインディング

これまで、基本的にはJSFのフロントとしてナナシナーを置くことを時流的に主に論を進めてきましたが、JSPプリプロセッサの代替物であるという位置づけから、Strutsと一緒につかうとかも可能です。また単体でも用いることができます。ビジネスロジックとのバインディングは、JSFであればJSFタグの属性値に式言語を書けばJSFタグがバインディングし、StrutsであればStrutsタグの属性値にstruts-configに定義されている識別子を設定すればStrutsタグがバインディングします。また、式言語によって、requestやcontext系の定義済み識別子などとバインディングすることになります。単体で用いる際の、JSP的なuseBeanの存在は悩ましいところです。ビジネスロジックオブジェクトのライフサイクル管理はテンプレート中に記述すべきではないと思いつつ、まったく手当てをしていないというのもどうかと思うので、以下のようにしてみようかと。

<span tagid="$model$" name="today" object="#{new java.util.Date()}" scope="session">

設定XMLに書くなら、

<model name="today" object="#{new java.util.Date()}" scope="session"/>

と、上記$model$を考えている中、parameterやexport、taglibも、同様にmetaでなくマジックIDでやるようにしたいと思いました。metaのcontents属性の値に複数の情報をまとめてぶち込むのが不恰好かなと思うためです。

<span tagid="$tablib$" prefix="c" url="http://java.sun.com/tld/jstl/core">
<span tagid="$parameter$" name="year" type="int">
<span tagid="$export$" name="border" url="http://www.foo.co.jp/taglib">

書きたければ、metaタグを乗っ取って書いてもOK。

<meta tagid="$tablib$" prefix="c" url="http://java.sun.com/tld/jstl/core">

ナナシナーはtagidの有無と値でさまざまな判断をします。