Migration complète vers PrimeFaces Freya - Corrections des incompatibilités et intégration de primefaces-freya-extension
This commit is contained in:
113
CORRECTION_WARNING_DATATABLE.md
Normal file
113
CORRECTION_WARNING_DATATABLE.md
Normal file
@@ -0,0 +1,113 @@
|
||||
# 🔧 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 :
|
||||
|
||||
1. **Valeur potentiellement null** : Si `userListBean.pageSize` est `null` ou non initialisé, PrimeFaces ne peut pas déterminer le nombre de lignes par page
|
||||
2. **Exigence PrimeFaces** : Quand `paginator="true"`, l'attribut `rows` doit avoir une valeur définie (non null)
|
||||
|
||||
---
|
||||
|
||||
## ✅ Solution Appliquée
|
||||
|
||||
### Avant
|
||||
```xml
|
||||
<p:dataTable
|
||||
id="userTable"
|
||||
value="#{userListBean.users}"
|
||||
var="user"
|
||||
rowKey="#{user.id}"
|
||||
paginator="true"
|
||||
rows="#{userListBean.pageSize}"
|
||||
rowsPerPageTemplate="10,20,50"
|
||||
...>
|
||||
```
|
||||
|
||||
### Après
|
||||
```xml
|
||||
<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
|
||||
|
||||
```xml
|
||||
rows="#{userListBean.pageSize != null ? userListBean.pageSize : 10}"
|
||||
```
|
||||
|
||||
**Comportement** :
|
||||
- Si `userListBean.pageSize` est défini et non null → utilise cette valeur
|
||||
- Si `userListBean.pageSize` est null → utilise `10` comme 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 `pageSize` est null
|
||||
|
||||
### Après
|
||||
- ✅ Plus de warning
|
||||
- ✅ Comportement prévisible avec valeur par défaut
|
||||
- ✅ Pagination fonctionne correctement même si `pageSize` n'est pas initialisé
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Alternative (Si Nécessaire)
|
||||
|
||||
Si vous préférez une valeur fixe au lieu d'une valeur dynamique avec fallback :
|
||||
|
||||
```xml
|
||||
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
|
||||
|
||||
- [PrimeFaces DataTable Documentation](https://www.primefaces.org/docs/vdl/14.0.0/primefaces-p/dataTable.html)
|
||||
- [JSF Expression Language (EL)](https://jakarta.ee/specifications/faces/3.0/jakarta-faces-spec-3.0.html#el)
|
||||
|
||||
---
|
||||
|
||||
*Document créé le: 2025-12-18*
|
||||
|
||||
Reference in New Issue
Block a user