いろいろ

ここ何日かMaya-0.9.15を触っていたときに気になったこと。理解が浅いので言ってることがずれているかもしれないけど。

  • m:ifプロセッサでm:writeするとき、インデントに使った空白(タブ)も描画される

m:writeが<textarea>への描画の時に、先頭にインデントの空白まで入ってしまう。<textarea>内にダミー用の<span>を書いて、そいつにm:writeすれば回避できるけど。ボディが有効なプロセッサでは、&nbsp;とかで明示的に示さない限り前後の空白はトリムするとかってどうかなぁ。

  • titleタグに子要素を持たせると、titleタグのボディの一部の描画位置がずれる

具体的には、bodyタグ開始直後に描画されてしまうという現象が発生します。これは、.mayaファイルがなくても、MayaServletを通すだけで発生します。以下、ソースと表示されたHTML。

// ソースHTML
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-31J"/>
<title>タイトル<span>ダミー</span>テスト</title>
</head>
<body>
ここはボディ
</body>
</html>
// 描画結果のhtml(未加工)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
<title>タイトル</title></head><BODY><span>ダミー</span>テスト


ここはボディ


</BODY></html>

レイアウト機能を使って表示されるページごとに<title>の内容を変えたいと思っていたわけですが、レイアウト画面では消え去った<title>の一部が表示されるだけなので、残念ながら今のところうまくいかないというわけですね。

  • ${hoge.fuga.foo}で、fugaがnullでも例外を握りつぶして欲しいかも

必ずチェックが必要になるけど、JavaScriptでもそうだから仕方ないか…

  • WEB-INF/pageに配置したときのアクセス

開発者の方のところでもあがっていたけど、個人的にWEB-INF/pageにおいておきたいので、webアプリ側ではindex.htmlを使わないようにしてコンテキストルートにindex.mayaを置いてwebアプリのトップ画面にforwardするようにしてみた。あとは、Servlet2.4を使っているなら、JSP2.0以降でのウェルカムページの設定:JavaTips 〜JSP/サーブレット編 - @ITにあるようにデフォルトサーブレットをMayaServletにマッピングするとか(でもこうするとページがなくてもMayaServletが処理するので404とかの処理ができなさそう)。