GS-reactor avancé — Transformation de l’arbre des tags en arbre de DOM nodes, @ForEach, @Select

Afin de créer l’arbre des DOM nodes, l’arbre des tags est parcouru en profondeur. Un DOM node racine correspondant au tag racine et à un contexte racine correspondant au générique Engine est créé. Puis par défaut, pour chaque tag enfant, un DOM node enfant associé au tag enfant et au même contexte que le DOM node parent est créé. Ce comportement est toutefois modifié lorsqu’un metaBinding a été défini sur le tag enfant. Le métabinding précise quel(s) contexte(s) associer au tag enfant afin de créer un ou plusieurs DOM nodes enfants, en créant de nouveaux contextes si nécessaire.
Il existe deux sortes de métabindings : les forEach et les selects. Un seul métabinding peut être défini sur un tag donné. Un métaBinding peut servir à :

  • Démultiplier un tag en l’associant à plusieurs contextes enfants du contexte courant (forEach).
  • Afficher ou non un tag en fonction de conditions liées au contexte courant (select).
  • Créer un unique contexte enfant du contexte courant en sélectionnant une classe générique.

Les deux premières utilisations sont similaires aux forEach et if des JSP. La troisième permet d’utiliser exactement la même classe Table pour afficher les instances de types différents.

Les métabindings sont usuellement définis à l’aide des annotations @ForEach, @ForEachContext, @Select, @SelectContext ou @DirectSelect.

Continue reading GS-reactor avancé — Transformation de l’arbre des tags en arbre de DOM nodes, @ForEach, @Select