-今日の究極の結論
もっというと、HTMLの美しいテンプレート(もしあればプラス外部設定XML)を食って、JSPファイルに直すプリプロセッサを作ればいいんじゃないかな?Jasperに食わせばJavaソースコードになったうえ、普通のサーブレットにコンパイルするわけですよ!Tapestryですらキャッシュはするけどコンパイルはしてないぞ!!いや、興奮してしまいました。。。。。で、さらにがんばれるなら、直接ソースコードを生成してコンパイルするSeasarプロジェクト版Jasperをつくればいいんだよね。
で、やっぱり式言語はOGNL。あとはTapestryのPageスペックXMLのcomponentタグとbindingタグみたいなものとTLD引っ張るためのtaglibタグを定義すればいいかな。bindingはexpression属性ではなく、タグボディでOGNLを書けば、文字リテラルは"string"だし。
<page> <template>templateFinder.getTemplate(context.locale)</template> <taglib prefix="f" url="http://java.sun.com/jsf/core"/> <taglib prefix="h" url="http://java.sun.com/jsf/html"/> <component name="form1" type="f:form"/> <component name="text1" type="h:inputText"> <binding name="value">comp.prop</binding> </component> <component name="button1" type="h:commandButton"> <binding name="value">"OK"</binding> <binding name="action">comp.submit</binding> </component> </page>
ジャストアイディアですが。。。XMLはつかわずにHTMLにインプリシットするなら、
<html> <head> <meta name="taglib" content="f;http://java.sun.com/jsf/core"/> <meta name="taglib" content="h;http://java.sun.com/jsf/html"/> </head> <form swcid="f:form"> <input type="text" swcid="h:inputText" value="comp.prop"> <input type="submit" swcid="h:commandButton" action="comp.submit"> </form> </html>
細かな問題はまだ考えてません。