Migration complète vers PrimeFaces Freya - Corrections des incompatibilités et intégration de primefaces-freya-extension

This commit is contained in:
lionsdev
2025-12-27 00:18:31 +00:00
parent 5e272a8256
commit 5c996931a6
206 changed files with 36646 additions and 1593 deletions

View 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*