Micro Tip #1 : et le html

Publié le par stoi

Pour ce premier micro tip, je vais vous parler d'un comportement du composant JSF <h:panelGrid> qui est un peu surprenant (en version 1.2, je ne sais pas pour la 2.0)

<h:panelGrid> est un tag qui permet de générer une <table> html en dynamique : vous décidez du nombre de colonnes, et il va mettre tout seul chaque élément contenu dans le tag dans une case du tableau, en remplissant les lignes de gauche à droite.
Exemple : vous avez un panelGrid de 3 colonnes et 7 éléments, le tableau résultant aura 2 lignes complètes et la première case de la 3ème ligne.

Donc quand vous organiserez votre grid, si vous insérez un élément, tous les suivants seront décalés.

C'est ce qui arrive lorsque vous mettez un commentaire dans votre panelGrid : il sera comptabilisé dans la liste d'éléments et produira un <tr />, ce qui mettra à mal toute votre table !

En fait, ce sont les tags html qui sont très mal interprétés.
Si vous écrivez une grid comme ça :
 <h:panelGrid columns="2" border="1"> <div> <h:outputText value="1" /> <h:outputText value="2" /> </div> <pre> 3 4 </pre> <a href="#">5</a> 6 </h:panelGrid> 

Vous obtiendrez le tableau suivant :
table.GIF

Observez le comportement du div :
 <div> <h:outputText value="1" /> <h:outputText value="2" /> </div> 
Le panelGrid vous comptera 3 éléments : le <div> qui produira un <tr /> et les deux outputText chacun dans une case !

Pour grouper des éléments dans une case il faudra les mettres dans un <h:panelGroup>.


Marrant non ?


tags : Java EE, JSF, MicroTip

Publié dans Java

Pour être informé des derniers articles, inscrivez vous :

Commenter cet article