[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 &lt; 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 &lt; 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 メーリングリストの案内