2010年11月22日月曜日

何も書けません...

いろいろ忙しいです。

2010年11月11日木曜日

Mayaa ループ

前回は値の出力(属性への出力も)を実施したので、
今回はループ。

あとは、条件分岐をやれば、だいたいのページは生成できると思います。



さて、こんなテーブルを作りたいことありますよね。

たとえば、一覧出力画面とかで。






で、以下の状況を想定。


  • requestスコープに、listAddressというjava.util.List型のオブジェクトがある

  • Listの中身はPOJOで、customerCode, customerName, customerAddressが存在する



htmlは↓のかんじ






で、mayaaは↓のかんじ






ここでポイントなのが、<m:doBody />タグ。
これがないと、↓のようなhtml出力されてしまいます。






Mayaaのドキュメントには、以下のように書いてあります。


割り当てられたタグのボディを処理します。for プロセッサなどタグのボディが有効なプロセッサで動作します。通常は明示的に使用することはありませんが、Mayaa ファイル側のボディに attribute 以外のプロセッサや空白 (タブ文字、改行を含む) 以外の文字列を記述した場合、doBody を使用しなければタグのボディが処理されません。


つまり、簡単にいうと、forプロセッサのボディを評価したければ、<m:doBody />を書け、と。
この場合だと、を評価しないとinfoが使えませんので、ぜひ<m:doBody />を付けてください。


ちなみに、<m:for />にreplace="false"を付けないと、が消えてしまい、
以下のようなhtmlが出力されてしまいます。



2010年11月9日火曜日

Mayaa 値の挿入

Mayaaについて書いてみる。

まあ、に書いてあるんだけど、
ここには、目的別に書いてみる。


セッション中の値を表示する



●表示




みたいな出力をしたい場合があります。
もちろん、「○○」はセッション中の動的な値で。

そういうときは、

前提

  • セッション中にuserInfoオブジェクトが存在する

  • userInfoにはuserName属性があり、そのgetter/setterが存在する(この場合setterは関係ないかも)

  • ちなみにuserNameはjava.lang.String型である



●html




などと書きます。
もちろん、htmlの先頭には、





と書いておきます。

で、mayaaファイルには




javascript:void(0)
って書けばOKです。


value属性にセッション中の値を表示する



上では要素として?の出力を書きましたが、
属性値に書きたい場合もありますね。

こんな場合を想定↓

●表示は省略。
テキストボックス中のvalueに出力したい場合

1. 想定するケースとしては、入力画面でsubmitしたあと、入力エラーがあって、画面を再表示する場合
2. 変更画面で、現在の値を入力しておいてあげる優しさを見せたいとき


そういうときは、

前提

  • セッション中にuserInfoオブジェクトが存在する

  • userInfoにはuserName属性があり、そのgetter/setterが存在する(この場合setterは関係ないかも)

  • ちなみにuserNameはjava.lang.String型である



●html

変更後のユーザ名:


などと書きます。

で、mayaaファイルには





って書けばOKです。
これで、valueの中に動的な値を出力できます。

2010年11月3日水曜日

Javaテンプレートエンジン [Mayaa]

pythonとか使ってて思うことですが、
強力なテンプレートエンジンがあるってことは
その言語の魅力だなーと。

で、Javaには無いのかーってことで
Mayaa

結構気になってたんだけど
なかなか使う機会なく,,,


ちゃんとドキュメント読んだのは初めてですが、
これはいい!と思ったのはレイアウト。

レイアウト共有

JSPだと、各ページ共通のものをincludeでガチガチ書かないとダメですが、
このレイアウトの発想を待ってました!

要は、基本となるlayout.htmlがあって、
各ページで異なる部分をそこにインサートしていく、と。


詳細は次回。