JSF: h: dataTable vs h: panelGrid

Dans JSF, h:dataTable et h:panelGrid créent tous deux des balises de table html.

Quelle est la différence entre les deux?

Quand utiliser l’un ou l’autre?

Comme son nom l’indique, h:dataTable est principalement utilisé pour afficher une table contenant des données provenant de certains modèles de votre application. Voici un exemple d’utilisation.

         

h:panelGrid est principalement utilisé pour la disposition et le placement d’éléments. Voici un exemple d’utilisation.

       

Le DataTable est un composant de sortie de données piloté par un modèle . Pour chaque ligne de votre modèle, le composant peut définir l’état de ses enfants pour chaque phase du cycle de vie du fichier JSF . Ce comportement est bénéfique ou préjudiciable selon ce que vous essayez d’atteindre.

En revanche, le panelGrid est juste un contrôle de mise en page .

La différence est (très) sensiblement analogue à la différence entre JTable et JPanel .

Vous devez utiliser un panelGrid lorsque vous connaissez le nombre de lignes et de colonnes que vous souhaitez afficher, vous devez définir vous-même tous les composants enfants (manuellement, le panelGrid n’appenda pas de lignes / de colonnes par lui-même) et le disposera tout seul. . DataGrid, quant à lui, est utilisé lorsque vous avez une structure de données (telle qu’une collection) avec une taille indéterminée. Il vous suffit ensuite de spécifier les colonnes que vous souhaitez imprimer. DataGrid va parcourir cette collection en créant une ligne pour chaque entrée.