Salutations,JSF dataTable pour afficher un nombre fixe de lignes
Le contexte est MyFaces 2.0.2, peut-être aussi ajouter Tomahawk 20-1.1.10
J'ai créé un dataTable (actuellement un h:dataTable
, mais pourrait également être un t:dataTable
en utilisant Tomahawk) affichant certains attibuts d'un List<MyObject>
dans un haricot de support. J'ai pagination en retournant seulement un subList
de la liste, et en triant également par le clic des en-têtes de colonne.
La prochaine chose que je dois faire est de m'assurer que la table affiche toujours un nombre fixe de lignes. Par exemple, si la taille de ma page est de 5 et que j'ai 12 éléments dans la liste, j'ai besoin de la page trois pour afficher les deux derniers éléments, plus 3 lignes vides.
J'ai essayé de « pad » le subList
avec les valeurs nulles et les instances de myObject
avec des valeurs nulles, mais cela conduit à ConcurrentModificationException
en frappant la dernière page de la table (la vue essayait de getDisplayList
même que la méthode d'échange était toujours en ajoutant les valeurs supplémentaires.). J'ai ensuite essayé de remplir la liste principale de la même manière, mais j'ai ensuite obtenu NullPointer
sur mes fonctions de tri (une évidence en arrière). De plus, ces choses sont toutes ajoutées dans le backing, quand je préfère le faire dans la vue xhtml.
(h:/t:)dataTable
possède un attribut rows
, mais spécifie le nombre maximum de lignes à afficher, et non le minimum, selon mes besoins.
Des idées, s'il vous plaît?
Vous remarquerez que c'est l'une des choses que j'ai essayé. Le résultat est une exception NullPointer sur les fonctions de tri. J'utilise des classes internes Comparator internes, et la déclaration de la fonction "public int compare (MyObject obj1, MyObject obj2)" est l'endroit où l'exception est levée si les objets eux-mêmes sont nuls. Si les objets ne sont pas NULL mais que leurs valeurs sont, alors une exception est lancée dans cette fonction quand j'ai, disons "return obj1.getStringValue(). CompareTo (obj2.getStringValue());" – cobaltduck
Ah, c'est vrai. Puis enveloppez la sous-liste dans une nouvelle liste ArrayList et remplissez-la à la place avant de revenir à la vue. – BalusC