Mayaa再入門

あの頃は何がなんだかよくわからなかったMayaa。だが今ならきっと何かがわかる!
というわけでMayaaの便利機能をドキュメントから探して使ってみました。

default.mayaa

コンテンツページの<h1>の中身ををレイアウトページの<title>内にも設定するのに使用しています。
default.mayaa

<m:doRender m:id="title" name="title"><m:doBody/></m:doRender>

contents.html

<h1 id="title">何かするページ</h1>

layout.mayaa

<m:insert m:xpath="/html/head/title" name="title" replace="false"/>

その他にもレイアウトページにコンテンツページを埋め込むのに使用しています。
しかしこの機能を使うとjava.lang.Throwable.htmlが使えなくなってしまうのはどうにか回避できないでしょうか…。

デフォルトレイアウト

う〜ん、便利、なんでしょうか?
.mayaaは大体コピペで作るからm:extendsも一緒にコピーされるはず。
レイアウトの切り替えは一瞬でできますけど…。

xpath

権限やモードによって表示・非表示を切り替えるのとかに使えそうです。

パス自動調整

便利です。

requestスコープ

isUserInRole()が使いたくて

request.isUserInRole(hoge)

としてみたのですが、うまくいきませんでした。
Mayaaの定義済みオブジェクトのrequestはrequestスコープのことで、HttpServletRequestではないからですね。
仕方ないので

Packages.org.seasar.struts.util.RequestUtil.getRequest().isUserInRole(hoge)

で解決です。

m:exec

古いバージョンとの整合性に問題があるからこういうのは難しいんでしょうかね。

<m:exec m:id="sdf"><![CDATA[
  var hoge = 0
  if (request.piyo) hoge = 1
]]></m:exec>

属性自動セット

これは便利そうです。まだ使ってないんでわからないんですが。
でも今までいちいちmaxlengthとかclassとかコピーするのはスマートじゃないなあと感じていたので、便利な予感がします。