-目玉機能の片鱗
以下のファイルを最新CVS版Mayaに配置します。
<html xmlns:m="http://www.seasar.org/maya" xmlns:c="http://java.sun.com/jstl/core_rt"xmlns:jsp="http://java.sun.com/products/jsp/"> <head> <meta http-equiv="content-type" content="text/html; charset=Shift_JIS"> </head> <body> <h1>JSP</h1> <jsp:useBean m:name="localeModel" m:class="org.seasar.maya.sample.hello.LocaleModel"/> <div> <c:out m:value="${ localeModel.processLocale(pageContext) }"/> </div> </body> </html>
想像どおりの結果が描画されます。これの重大性がご理解いただけますでしょうか?m:プレフィックスが貼ってあるところがMayaオリジナルな雰囲気を残していますが、JSPに近い記述になっています。今の完成度ではここまでしかJSPに似ません(笑。useBeanもJSPのものではなく、Mayaのそれを使っています。そのため、式言語がOGNLなのは変わりません。
しかし、<%taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>もパースできるように、これから実装します。そうすると、よりJSPっぽくなります。また、「jsp」名前空間を貼ってますが、jspに限っては宣言無しでも動くようにします。jsp名前空間およびテンプレに直書きのカスタムタグは明らかにHTMLタグではないので、名前空間無しのものをパラメータとして認識するようにそこだけ切り替えるとさらに良いでしょう。この機能の目指すところは、制限はありますが、既存のJSP1.2が普通に動くテンプレートエンジン。いまは素通しですが、このモードはスイッチでデフォルトオフにしたいと思います。
いくらJSPに似せても、スクリプトレットだけは許しません(笑。また、私はJSPは嫌いなんです。嫌いだからMayaを作ってるわけですからね。しかーし、互換モードは隠し機能で作っておきたかった。
追記
JSP仕様に近づけるべく、jsp名前空間のURIを省略するようにしました。