Comment afficher l'index de ligne dans un JSF datatable
Dans un JSF dataTable je veux afficher les index de rangée à côté des lignes... comme:
Column A Column B
1 xxx
2 yyy
J'ai pensé que je pourrais utiliser un implicite el variable comme #{rowIndex} mais ce n'est pas de travail.
Une solution que j'ai trouvé est de créer une liaison de données pour la table et utiliser la liaison comme:
<h:dataTable var="item" value="#{controller.items}" binding="#{controller.dataTable}">
<h:column>#{controller.dataTable.rowIndex}</h:column>
<h:column>value</h:column>
</h:dataTable>
mais cette solution est complexe et ne fonctionne pas bien quand j'ai beaucoup de nested tables de données dans une page.
Des idées sur la façon de résoudre cela dans une meilleure façon?
- Voir [stackoverflow.com/questions/14633008/.... Cette réponse est plus récent que ceux d'en bas - aussi court et doux.
Vous devez vous connecter pour publier un commentaire.
La solution existante ne pas me frapper comme une mauvaise. Le rowIndex devrait fonctionner dans les tables imbriquées, aussi longtemps que vous faites référence au modèle de la table imbriquée.
Exemple de modèle:
De nidification des tables de données doit généralement être évitée si vous ne faites pas attention (par exemple, rendre les enfants d'un formulaire), ce qui peut conduire à un O(N^2) passer au-dessus de la table des enfants pour chaque phase du cycle de vie sur un submit (et il y a 6 phases dans le cycle de vie).
Pour quelque chose qui est à l'extérieur du modèle, vous pouvez utiliser un simple compteur dans un managed bean:
Config:
Vue:
Cela fonctionne parce que le haricot est demande-champ d'application et lié à une lecture seule de contrôle à l'extérieur d'un formulaire. Il ne serait pas travailler dans un imbriquée dataTable à moins que vous vouliez la ligne compteur global de la vue. Mais alors, je ne suis pas convaincu que l'index de ligne doit être fonction de la vue.
Imbriquée dataTable, vous feriez mieux de fournir de l'index de ligne de la ligne haricot. Il vous donne plus de contrôle si vous décidez de faire des choses comme la pagination sur des ensembles de données trop.
Cette solution a été posté par Jamie Williams sur CodeRanch. Il dit qu'il fonctionne avec Tomahawk. Je suis l'aide de primefaces, qui supporte également.
<h:outputText value="#{row+1}"/>
"Dans RichFaces il y a une solution similaire à Brent de l':
Ce travaille me
J'dépendent tout simplement de la liste et la position de la var sur cette liste: