# 🔧 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*

