[Seasar-user:12821] Re: [SAStruts/MAYAA] Bean 配列での連携の方法をご教授願えないでしょうか?【2】
Yasuo Higa
[E-MAIL ADDRESS DELETED]
2008年 2月 12日 (火) 17:06:04 JST
ひがです。
> いつもお世話になっております。
> TAIGAと申します。
>
> 今回はもう一つステップアップして、Beanの配列を用いた連携を確認しています。
> 確認用のプログラムのベースはMayaaの「申し込みフォームアプリケーション」の
> app_list.htmlを参考にしています。
> 下記のようにbeanの配列データをテーブルタグ内にループして表示するサンプル
> プログラムを作成したのですが、1件も表示されません。
> 期待値としては2件のレコードが表示されるのですが。。
>
> MAYAA自体、手探りで動作確認をしている状態で、Mayaa側なのかSAStruts側なの
> か、どちら側の記述の問題なのかの切り分けもついていないのですが、
> どなたかご教授願えないでしょうか?
>
最初は、Mayaa抜きで作ってみて、その後、Mayaa入りで作るのが、
問題の切り分けにはいいと思います。
SAStrutsの配列は、Mayaaから見るとListに見えるので、
今回の場合だと、
<m:for id="loop" replace="false"
init="${ var i = 0 }"
test="${ i < beans.size() }"
after="${ i++ }">
...
</m:for>
にすれば、動くと思います。
後、m:forは空タグではなく、<fmt:formatDate .../>の
後に終了タグが必要な気がします。
SAStrutsは、publicフィールドに対応していない
テンプレートエンジンでもpublicフィールドを使えるようにするために
配列やリストは、Listで独自にラップしていて、
JavaBeanやマップは、Mapで独自にラップしています。
よろしくお願いします。
>
>
> usebean.html ────────────────────────────────
> <html>
> <head>
> <title>use bean</title>
> </head>
> <body>
> <h1>Use bean</h1>
> <table border="1">
> <tr><th>id</th><th>name</th><th>decimal</th><th>timestamp</th></tr>
> <tr id="loop">
> <td><span id="id">10 dummy</span></td><td><span id="name">dummy
> name</span></td>
> <td><span id="decimal">1.2 dummy</span></td><td><span
> id="timestamp">1970/1/1 dummy</span></td>
> </tr>
> </table>
> </body>
> </html>
>
> usebean.mayaa ────────────────────────────────
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <m:mayaa xmlns:m="http://mayaa.seasar.org"
> xmlns:fmt="http://java.sun.com/jsp/jstl/fmt">
> <m:for id="loop" replace="false"
> init="${ var i = 0 }"
> test="${ i < beans.length }"
> after="${ i++ }" />
>
> <m:write id="id" value="${ beans[i].id }" />
> <m:write id="name" value="${ beans[i].name }" />
> <fmt:formatNumber m:id="decimal" value="${ beans[i].decimal }" />
> <fmt:formatDate m:id="timestamp" value="${ beans[i].timestamp }" />
> </m:mayaa>
>
> MayaaTestAction.java ────────────────────────────
> package tutorial.action;
>
> import org.seasar.struts.annotation.Execute;
> import example.MyBean;
>
> public class MayaaTestAction {
> public MyBean[] beans = new MyBean[2];
>
> @Execute(validator = false)
> public String index() {
> MyBean bean2 = new MyBean();
> bean2.setId(1);
> bean2.setName("Name1");
> beans[0] = bean2;
>
> bean2 = new MyBean();
> bean2.setId(2);
> bean2.setName("Name2");
> beans[1] = bean2;
>
> return "usebean.html";
> }
> }
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
Seasar-user メーリングリストの案内