Bedingung in einer Fast-Path-Schleife

Wenn innerhalb einer Fast-Path-Schleife eine Bedingung definiert ist, verhält sich diese, als ob für die Schleife ein Kriterium verwendet wird, anstatt eine Bedingung zu verschachteln, jedoch mit folgender Ausnahme: Erhält die Bedingung den Wert "true", kann die in der Bedingung enthaltene Seite nicht angezeigt werden, da die Schleife keine neue Iteration aufweist und deshalb übersprungen wird. Hat die Bedingung den Wert "false", so werden die Seite und die verknüpften Daten nicht gelöscht, da die Bedingung nicht erneut bewertet wird. Aus diesem Grund wird empfohlen, ein Kriterium für die Schleife statt einer Bedingung zu verwenden.

Abbildung 1. Codebeispiel für eine Bedingung in einer Fast-Path-Schleife
...
<loop loop-type="for-each" entity="Person"
  fast-path="true">
  <condition expression="Person.hasIncome==true">
    <loop loop-type="while" loop-expression="hasMoreIncome"
      entity="Income">
      <question-page id="IncomePage" entity="Income"
        show-person-tabs="true">
        <title id="IncomePage.Title">
          <![CDATA[Income Details]]>
        </title>
        <cluster>
          <title id="IncomeDetails.Title">
            <![CDATA[Income Details]]>
          </title>
          <question id="type">
            <label id="Type.Label">
              <![CDATA[Type:]]>
            </label>
          </question>
          <question id="amount">
            <label id="Amount.Label">
              <![CDATA[Amount:]]>
            </label>
          </question>
          <question id="hasMoreIncome"
            control-question="true"
            control-question-type="IEG_BOOLEAN">
            <label id="ContinueQuestion.Label">
              <![CDATA[Does %1s have any more income?]]>
              <argument id="Person.firstName" />
            </label>
          </question>
        </cluster>
      </question-page>
    </loop>
  </condition>
</loop>