This repository has been archived on 2026-01-03. You can view files and clone it, but cannot push or open issues or pull requests.
Files
lions-user-manager/CORRECTION_WARNING_DATATABLE.md

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 :

  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

<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.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 :

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