[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 &lt; 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 &lt; beans.length }"
で取得することになります。



Seasar-user メーリングリストの案内