[Seasar-user:12881] Re: [SAStruts/MAYAA] Bean 配列での連携の方法をご教授願えないでしょうか?【2】
TAIGA
[E-MAIL ADDRESS DELETED]
2008年 2月 14日 (木) 22:56:03 JST
TAIGAです。
SAStruts 1.0.1-rc2により、本件解決しました。
ありがとうございました。
一つ気になるところがあるのですが、
sastrutsのActionでは
public class MayaaTestAction {
public MyBean[] beans = new MyBean[2];
@Execute(validator = false)
public String index() {
MyBean bean2 = new MyBean();
bean2.setId(1);
bean2.setName("No1");
beans[0] = bean2;
bean2 = new MyBean();
bean2.setId(111);
bean2.setName("No2");
beans[1] = bean2;
return "usebean.html";
}
}
のようにbeansはMyBeanクラスの配列で定義しています。
これを.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.size() }" …………(1)
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>
(1)の箇所でbeans.size()でないと配列数が取得できません。
Javaソース上ではbeansはMyBeanクラスの配列なので配列数はbeans.lengthで取得しますよね?
これがsastrutsを利用した場合にはbeans.size()で取得することになるので、ハマリポイントに
なりそうです。仕様上beans.lengthで配列数を取得することは難しいのでしょうか?
ちなみに、sastrutsではなく通常のサーブレット+mayaaの場合は上記(1)の箇所は
test="${ i < beans.length }"
で取得することになります。
Seasar-user メーリングリストの案内