Question de liste générant une boucle

À l'aide de la même question de liste décrite dans Questions de liste, nous voulons regrouper des informations relatives aux revenus d'une personne d'un foyer. Nous allons utiliser une boucle Fast Path imbriquée comme décrit dans l'exemple suivant :

Figure 1. Exemple de code de question de liste Fast Path générant une boucle
...
<loop loop-type="for-each" entity="Person"
  criteria="hasIncome==true" fast-path="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[Détails des revenus]]>
      </title>
      <cluster>
        <title id="IncomeDetails.Title">
          <![CDATA[Détails des revenus]]>
        </title>
        <question id="type">
          <label id="Type.Label">
            <![CDATA[Type :]]>
          </label>
        </question>
        <question id="amount">
          <label id="Amount.Label">
            <![CDATA[Montant :]]>
          </label>
        </question>
        <question id="hasMoreIncome"
          control-question="true"
          control-question-type="IEG_BOOLEAN">
          <label id="ContinueQuestion.Label">
            <![CDATA[%1s a-t-il d'autres revenus ?]]>
            <argument id="Person.firstName" />
          </label>
        </question>
      </cluster>
    </question-page>
  </loop>
</loop>

La première fois que la question de liste est détectée, les pages suivant la boucle vont regrouper les revenus des personnes qui ont été sélectionnées. Lors d'une nouvelle visite de la page contenant la question de liste, les situations suivantes peuvent alors se produire: