2.8 KiB
2.8 KiB
🔧 Correction du Warning DataTable
Date: 2025-12-18
⚠️ Warning Corrigé
Message:
DataTable with paginator=true should also set the rows attribute. ClientId: formUserList:userTable
Fichier: lions-user-manager-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/user-manager/users/list.xhtml
🔍 Analyse du Problème
Le DataTable avait déjà l'attribut rows="#{userListBean.pageSize}", mais PrimeFaces générait un warning car :
- Valeur potentiellement null : Si
userListBean.pageSizeestnullou non initialisé, PrimeFaces ne peut pas déterminer le nombre de lignes par page - Exigence PrimeFaces : Quand
paginator="true", l'attributrowsdoit avoir une valeur définie (non null)
✅ Solution Appliquée
Avant
<p:dataTable
id="userTable"
value="#{userListBean.users}"
var="user"
rowKey="#{user.id}"
paginator="true"
rows="#{userListBean.pageSize}"
rowsPerPageTemplate="10,20,50"
...>
Après
<p:dataTable
id="userTable"
value="#{userListBean.users}"
var="user"
rowKey="#{user.id}"
paginator="true"
rows="#{userListBean.pageSize != null ? userListBean.pageSize : 10}"
rowsPerPageTemplate="10,20,50"
...>
Changement : Ajout d'une valeur par défaut de 10 si pageSize est null en utilisant l'opérateur ternaire EL.
📝 Explication Technique
Expression Language (EL) Utilisée
rows="#{userListBean.pageSize != null ? userListBean.pageSize : 10}"
Comportement :
- Si
userListBean.pageSizeest défini et non null → utilise cette valeur - Si
userListBean.pageSizeest null → utilise10comme valeur par défaut
Pourquoi 10 ?
- ✅ Valeur standard pour les tableaux paginés
- ✅ Correspond à la première option dans
rowsPerPageTemplate="10,20,50" - ✅ Bon compromis entre performance et lisibilité
🎯 Résultat
Avant
- ⚠️ Warning à chaque chargement de la page
- ⚠️ Comportement imprévisible si
pageSizeest null
Après
- ✅ Plus de warning
- ✅ Comportement prévisible avec valeur par défaut
- ✅ Pagination fonctionne correctement même si
pageSizen'est pas initialisé
🔄 Alternative (Si Nécessaire)
Si vous préférez une valeur fixe au lieu d'une valeur dynamique avec fallback :
rows="10"
Avantage : Plus simple, pas de dépendance à pageSize
Inconvénient : Ne respecte pas la préférence utilisateur stockée dans pageSize
📚 Références
Document créé le: 2025-12-18