ERP en LOGICIEL LIBRE dédié aux PME-PMI

           Devenez partenaire Principal ou Majeur de Neogia

Field Iterate



Principe

Actuellement, les forms utilisent une définition statique pour pouvoir, depuis un contexte, afficher les informations de façon dynamique. Lorsque nous voulons obtenir une form dynamique dans sa définition, nous devons généralement passer par des écrans ftl. Afin de rajouter de la dynamique dans les forms, nous pouvons définir un nouvel élément itératif qui itére sur une liste de map et applique à chaque map de la liste comme un contexte aux éléments contenus dans l'élément itératif.

Ex : 
<form name="example" type="single" target="NewObject">
  <field name="field1" title="${uiLabelMap.Example}"><display/></field>
  <field name="field2" title="${uiLabelMap.Example2}"><text/></field>
  <field name="records">
    <iterate suffix="_it">
      <field name="field3" title="title3"><display also-hidden="true"/><field>
      <field name="field4" title="title4"><text/><field>
    </iterate>
  </field>
  <field name="submit"><submit/></field>
</form>

Cette form pourra recevoir un contexte de ce type :

 field1 = foo
 field2 = bar
 records = [[field3 = firstFoo, title3 = ${uiLabelMap.ExampleTitle3}, 
             field4 = firstBar, title4 = ${uiLabelMap.ExampleTitle4}],
            [field3 = secondFoo, title3 = ${uiLabelMap.ExampleTitle3Other},
             field4 = secondBar, title4 = ${uiLabelMap.ExampleTitle4Other}],
            [field3 = thirdFoo, title3 = ${uiLabelMap.ExampleTitle3Another},
             field4 = thirdBar,  title4 = ${uiLabelMap.ExampleTitle4Another}]]

Lorsque le modelForm lit le field de type iterate, il relance une construction de champs avec comme contexte chaque élement de la liste. On rajoute l'attribut suffixe sur iterate pour pouvoir récupérer les champs par un service via le type List.