今回はループ。
あとは、条件分岐をやれば、だいたいのページは生成できると思います。
さて、こんなテーブルを作りたいことありますよね。
たとえば、一覧出力画面とかで。
- <table border="1" frame="box" id="addressTable">
- <tr>
- <td width="80" align="center"><b>顧客コード</b></td>
- <td width="80" align="center"><b>顧客氏名</b></td>
- <td width="200" align="center"><b>住所</b></td>
- </tr>
- <tr>
- <td align="center">00000001</td>
- <td align="center">terasoluna1</td>
- <td align="center">東京都中央区</td>
- </tr><tr>
- <td align="center">00000002</td>
- <td align="center">田中</td>
- <td align="center">東京都中央区</td>
- </tr><tr>
- <td align="center">00000003</td>
- <td align="center">鈴木</td>
- <td align="center">東京都中央区</td>
- </tr><tr>
- <td align="center">00000004</td>
- <td align="center">高橋</td>
- <td align="center">千葉県成田市</td>
- </tr><tr>
- <td align="center">00000005</td>
- <td align="center">小池</td>
- <td align="center">東京都中央区</td>
- </tr><tr>
- <td align="center">00000006</td>
- <td align="center">鈴木</td>
- <td align="center">東京都足立区</td>
- </tr><tr>
- <td align="center">00000007</td>
- <td align="center">佐藤</td>
- <td align="center">東京都国立市</td>
- </tr><tr>
- <td align="center">00000008</td>
- <td align="center">青木</td>
- <td align="center">東京都渋谷区</td>
- </tr><tr>
- <td align="center">00000009</td>
- <td align="center">山本</td>
- <td align="center">東京都中野区</td>
- </tr><tr>
- <td align="center">00000010</td>
- <td align="center">山下</td>
- <td align="center">東京都三鷹市</td>
- </tr>
- </table>
で、以下の状況を想定。
- requestスコープに、listAddressというjava.util.List型のオブジェクトがある
- Listの中身はPOJOで、customerCode, customerName, customerAddressが存在する
htmlは↓のかんじ
- <table border="1" frame="box" id="addressTable">
- <tr>
- <td width="80" align="center"><b>顧客コード</b></td>
- <td width="80" align="center"><b>顧客氏名</b></td>
- <td width="200" align="center"><b>住所</b></td>
- </tr>
- <tr m:id="loop">
- <td align="center"><span m:id="_customerCode">dummy code</span></td>
- <td align="center"><span m:id="_customerName">dummy name</span></td>
- <td align="center"><span m:id="_customerAddress">dummy address</span></td>
- </tr>
- </table>
で、mayaaは↓のかんじ
- <?xml version="1.0" encoding="UTF-8"?>
- <m:mayaa xmlns:m="http://mayaa.seasar.org">
- <m:for m:id="loop"
- m:init="${ var i = 0 }"
- test="${ i < listAddress.size() }"
- m:after="${ i++ }" replace="false">
- <m:exec script="${ var info = listAddress.get(i); }" />
- <m:doBody />
- </m:for>
- <!-- 顧客コード -->
- <m:write m:id="_customerCode"
- value="${info.customerCode}" />
- <!-- 顧客氏名 -->
- <m:write m:id="_customerName"
- value="${info.customerName}" />
- <!-- 顧客住所 -->
- <m:write m:id="_customerAddress"
- value="${info.customerAddress}" />
- </m:mayaa>
ここでポイントなのが、<m:doBody />タグ。
これがないと、↓のようなhtml出力されてしまいます。
- <table border="1" frame="box" id="addressTable">
- <tr>
- <td width="80" align="center"><b>顧客コード</b></td>
- <td width="80" align="center"><b>顧客氏名</b></td>
- <td width="200" align="center"><b>住所</b></td>
- </tr>
- <tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr>
- </table>
Mayaaのドキュメントには、以下のように書いてあります。
割り当てられたタグのボディを処理します。for プロセッサなどタグのボディが有効なプロセッサで動作します。通常は明示的に使用することはありませんが、Mayaa ファイル側のボディに attribute 以外のプロセッサや空白 (タブ文字、改行を含む) 以外の文字列を記述した場合、doBody を使用しなければタグのボディが処理されません。
つまり、簡単にいうと、forプロセッサのボディを評価したければ、<m:doBody />を書け、と。
この場合だと、
ちなみに、<m:for />にreplace="false"を付けないと、が消えてしまい、
以下のようなhtmlが出力されてしまいます。
- <table border="1" frame="box" id="addressTable">
- <tr>
- <td width="80" align="center"><b>顧客コード</b></td>
- <td width="80" align="center"><b>顧客氏名</b></td>
- <td width="200" align="center"><b>住所</b></td>
- </tr>
- <td align="center">00000001</td>
- <td align="center">terasoluna1</td>
- <td align="center">東京都中央区</td>
- <td align="center">00000002</td>
- <td align="center">田中</td>
- <td align="center">東京都中央区</td>
- <td align="center">00000003</td>
- <td align="center">鈴木</td>
- <td align="center">東京都中央区</td>
- <td align="center">00000004</td>
- <td align="center">高橋</td>
- <td align="center">千葉県成田市</td>
- <td align="center">00000005</td>
- <td align="center">小池</td>
- <td align="center">東京都中央区</td>
- <td align="center">00000006</td>
- <td align="center">鈴木</td>
- <td align="center">東京都足立区</td>
- <td align="center">00000007</td>
- <td align="center">佐藤</td>
- <td align="center">東京都国立市</td>
- <td align="center">00000008</td>
- <td align="center">青木</td>
- <td align="center">東京都渋谷区</td>
- <td align="center">00000009</td>
- <td align="center">山本</td>
- <td align="center">東京都中野区</td>
- <td align="center">00000010</td>
- <td align="center">山下</td>
- <td align="center">東京都三鷹市</td>
- </table>
0 件のコメント:
コメントを投稿