[mayaa-user:758] Re: List<Bean>要素のListフィールドへのアクセス方法(多重ループ)

suga [E-MAIL ADDRESS DELETED]
2009年 3月 7日 (土) 21:20:38 JST


suga です。

2009/3/6 Sachiko Suzuki <[E-MAIL ADDRESS DELETED]>:
> TypeError: Cannot call method "size" of undefined in script=
> i < categoryRow.eachDetailInfoList.size()
>
> となってしまいます。

メールに記載されている情報からでは原因はわかりませんね。

categoryRow の "eachDetailInfoList" というプロパティが未定義となっているので、
categoryRow のクラスが何なのかを確認するのが早道です。
乱暴ですが
m:test="${ java.lang.System.out.println('' + categoryRow.getClass());
i &lt; categoryRow.eachDetailInfoList.size() }"
などとして確認することもできます。


上記の問題が解決した後ですが、多分実現しようとしていることはメールに
記載されているものでは上手くいかないと思います。

"topcatergory" の定義が mayaa 側にふたつありますが、最初に出現したものしか
使いませんし、m:id="visible" で replace="false" を指定するか、ボディに m:echo を
書くかしないと visible の td は消えてしまいます。


おそらく、こんな感じで意図した物になると思います。
---- html
(<html xmlns:m="http://mayaa.seasar.org"> として m: を有効にしています
 html の id は無視するように設定するのがおすすめです。
 http://mayaa.seasar.org/documentation/equals_id_resolver.html)

<table>
    <tbody>
        <tr m:id="categoryLoop">
            <td m:id="topcatergory" class="topt" colspan="1"
rowspan="1" nowrap="nowrap">
                <span m:id="topname">testtop</span>
            </td>

            <td m:id="middlecatergory" class="style25">
                <span id="middlename">testmiddle</span>
            </td>

            <td m:id="detailLoop">
                <div class="style30">
                    <span m:id="color">
                        <span m:id="act">aaaa</span>
                    </span>
                </div>
            </td>
        </tr>
    </tbody>
</table>

---- mayaa

<m:beforeRender><![CDATA[
    // ユーティリティは Java で定義した方が使い回しや速度面で有利ですが、
    // 簡単のためここで定義しています。
    function spanValue(intValue) {
        if (intValue >= 2) {
            return intValue;
        }
        return null;
    }
]]></m:beforeRender>

<m:forEach m:id="categoryLoop" items="${ actionForm.categoryBeanList
}" var="categoryRow">
    <m:echo><m:doBody /></m:echo>
</m:forEach>

<m:if m:id="topcatergory" test="${ categoryRow.categoryShowFlg == 1 }">
    <m:echo>
        <m:attribute name="colspan" value="${
spanValue(categoryRow.colspan) }" />
        <m:attribute name="rowspan" value="${
spanValue(categoryRow.rowspan) }" />
        <m:doBody />
    </m:echo>
</m:if>
<m:write m:id="topname" value="${ categoryRow.categoryName }" />

<m:if m:id="middlecatergory" test="${ categoryRow.colspan &lt; 2 }">
    <m:echo>
        <m:attribute name="colspan" value="${
spanValue(categoryRow.colspan) }" />
        <m:attribute name="class" value="style_b" />
        <m:doBody />
    </m:echo>
</m:if>
<m:write m:id="middlename" value="${ categoryRow.lowerCategoryName }" />

<m:forEach m:id="detailLoop" items="${ categoryRow.eachDetailInfoList
}" var="detail">
    <m:echo><m:doBody /></m:echo>
</m:forEach>

<m:echo m:id="color">
    <m:attribute name="class" value="${ detail.style }" />
</m:echo>
<m:write m:id="act" value="${ detail.detailName }" />

-- 
suga ( [E-MAIL ADDRESS DELETED] )


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