2

私はStruts2を初めて使用し、イテレータタグを使用してJSP内のコレクションのコレクションを反復処理することに頭を悩ませています。

私のアクションクラスはリスト(親)を公開し、リストにはさらに4つのリスト(子)が含まれています。各子リストには、5つのドメインオブジェクト(e.g. User)が含まれています。

私のJSPでは、コレクションを繰り返し処理した後、User.Nameを表示する必要があります。親コレクションを反復処理することはできますが、子リストにアクセスできません。それらは匿名のリストであり、特定の名前で公開されていません(つまり、ゲッターは利用できません)。

    <s:iterator value="usrList" var="refParent">
    <ul>
        <s:iterator value="#refParent.columns" var="usr">
        <li>
            <s:property value="#usr.Name"/>
        </li>
        </s:iterator>   
    </ul>
</s:iterator>

外側のイテレータは4つ<ul>のタグになりますが、これらのタグはそれぞれ空です。つまり、<li>どのタグも表示されません。

私が見るすべての例は、特定の名前付きコレクション(例User.PhoneList)にアクセスしていますが、これらのいずれもこの特定の動作を示していないようです。

どんな助けでも大歓迎です

4

3 に答える 3

1

イテレータタグの例の1つからようやく理解できたと思います(UmeshとQuaternionに感謝します)。私はそれを完全に見逃し、を使用して例全体を読み通しませんでしたtop

   <s:iterator value="usrList">
     <ul>
        <s:iterator value="top">
         <li>
            <s:property value="Name"/>
         </li>
        </s:iterator>   
    </ul>
  </s:iterator>
于 2012-10-30T17:31:32.497 に答える
0

このリンクからこの例を試してください

<table>
<s:iterator value="allCities" id="cities">
    <s:iterator value="#city.phoneNumbers" id="number">
    <tr>
        <td>
        <!-- Accessing the city name through the city variable -->
            <s:property value="#city.name" />
        </td>
        <td>
            <!-- Accessing the objects inside the phone number object through the number variable -->
            <s:property value="#number.prefix" />
        </td>
        <td>
            <s:property value="#number.rate" />
        </td>
    </tr>
    </s:iterator>
</s:iterator>
</table>
于 2012-10-29T04:19:06.063 に答える
0

Struts2 Iterator タグは十分に単純で、非常に単純な方法で機能します。したがって、コレクションのコレクションまたは単純な Java アプリケーションでそれらをどのように反復するかを考える構造がある場合、S2 イテレータータグにも同じことが適用されますが、同時に構成だけでなく、柔軟性も向上します。

つまり、ネストされた反復子タグが必要です。S2反復子タグがオブジェクトを反復すると、現在のオブジェクトが値スタックの一番上に配置され、JSPコードでそのタグに簡単にアクセスできます。

あなたのコードではトップレベルのオブジェクトがコレクションになるので、それをもう一度繰り返す必要があります

<s:iterator value="firstCollection">
 <s:iterator value="firstCollection>
    / do what you want here
  </iterator>

繰り返しオブジェクトがスタックの一番上にあるため、参照なしでそのタグを直接参照できます。

次の公式ドキュメントをご覧になることをお勧めします

  1. イテレータ
  2. イテレータタグの例
于 2012-10-29T05:49:13.490 に答える