Comment afficher un message si un JSF datatable est vide?

en utilisant JSF1.2, si ma liaison datatable ne renvoie aucune ligne, je veux afficher un message disant Ainsi.

Comment je fais ça?

et pour les points supplémentaires-Comment puis-je cacher complètement la table si elle est vide?

Merci.

28
demandé sur blank 2009-12-31 17:57:17

2 réponses

utiliser le rendered l'attribut. Il accepte une expression booléenne. Vous pouvez évaluer la valeur du datatable à l'intérieur de l'expression à l'aide des EL's empty mot clé. Si elle retourne false, le composant entier (et ses enfants) ne sera pas rendu.

<h:outputText value="Table is empty!" rendered="#{empty bean.list}" />

<h:dataTable value="#{bean.list}" rendered="#{not empty bean.list}">
    ...
</h:dataTable>

pour le cas qui vous intéresse, voici d'autres exemples de base comment utiliser les pouvoirs EL à l'intérieur du rendered l'attribut:

<h:someComponent rendered="#{bean.booleanValue}" />
<h:someComponent rendered="#{bean.intValue gt 10}" />
<h:someComponent rendered="#{bean.objectValue eq null}" />
<h:someComponent rendered="#{bean.stringValue ne 'someValue'}" />
<h:someComponent rendered="#{not empty bean.collectionValue}" />
<h:someComponent rendered="#{not bean.booleanValue and bean.intValue ne 0}" />
<h:someComponent rendered="#{bean.enumValue eq 'ONE' or bean.enumValue eq 'TWO'}" />

Voir aussi:

91
répondu BalusC 2015-06-16 20:06:46

vous pouvez le tester de plusieurs façons, par exemple en ayant une fonction dans un haricot qui teste la taille de la liste:

function boolean isEmpty() {
    return myList.isEmpty();
}

puis dans les pages JSF:

<h:outputText value="List is empty" rendered="#{myBean.empty}"/>

<h:datatable ... rendered="#{!myBean.empty}">
...
</h:datatable>
2
répondu romaintaz 2009-12-31 15:22:23