0

だから、私はここでタペストリーループから抜け出そうとしています.

これは私の多かれ少なかれ単純化されたシナリオです。

<ul>
    <t:loop source="firstSource" value="firstValue">
            <li>
                <t:loop source="firstValue" value="secondValue">
                    <p>${secondValue}</p>
                </t:loop>
                <t:loop source="secondSource" value="thirdValue">
                    <p>${thirdValue}</p>
                </t:loop>
            </li>
    </t:loop>
</ul>

私が望んでいないのは、タペストリーが firstValue のすべてのエントリをループしてから、secondSource のすべてのエントリをループすることです。これは secondSource のすべてのエントリを反復処理するため、 fristValue のループ内で secondSource を反復処理したくありません。一度に 1 つの反復処理を実行したいだけです。

私がしたいのは、次のとおりです。 Tapestry は firstValue のループに入り、印刷などを行い、最初の反復後に中断し、 secondSource にジャンプして最初の反復を実行します。終了後、firstValue に戻り、これらの手順を繰り返します。これが Java の「break;」です。するでしょう。

これを行う方法に関するタペストリーのドキュメントにも、フォーラムにも手がかりが見つかりませんでした。

しかし、それは何らかの方法で可能でなければなりません。これをやろうとしているのが私だけだとは想像できません。

4

2 に答える 2

1

おそらくインデックス変数を使用して、ロジックの周りに if ステートメントを配置するだけです。

   <t:loop source="firstSource" value="firstValue">
            <li>
                <t:loop source="firstValue" value="secondValue" index="firstValueIndex">
                   <t:if test="firstCondition">
                     <p>${secondValue}</p>
                   </t:if>
                </t:loop>
                <t:loop source="secondSource" value="thirdValue">
                  <t:if test="secondCondition">
                    <p>${thirdValue}</p>
                  </t:if>
                </t:loop>
            </li>
    </t:loop>

Java ページで:

@Property
private int firstValueIndex;

public boolean getFirstCondition() {
  // logic to determine whether to break out
  return firstValueIndex == 0;
}

public boolean getSecondCondition() {
  // logic
}
于 2012-06-06T17:40:05.660 に答える