Question

Utilisé pour développer des portlets et des JPS, vous avez donc un dilemme.

tâche: affichez < h: table de données > uniquement lorsque la liste n'est pas vide

Est-il possible de fournir la balise < c: if > pour la page JSF?

Était-ce utile?

La solution

Oui, vous pouvez ajouter des balises JSTL dans vos pages JSF. Cependant, dans votre cas, vous pouvez simplement procéder comme suit:

<h:dataTable value="#{myBean.list}"... rendered="#{myBean.displayTable}">
    ...
</h:dataTable>

avec la méthode suivante dans myBean :

public boolean isDisplayTable() {
    return list != null && list.size() > 0;
}

Vous pouvez également essayer cela (vous ne savez pas si cela fonctionnera):

<!-- Idea from Colin Gislason -->
<h:dataTable value="#{myBean.list}"... rendered="#{not empty myBean.list}">
    ...
</h:dataTable>

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

Notez que vous pouvez utiliser le mot-clé ! à la place du mot-clé not dans les expressions EL (voir le guide ici à propos des expressions EL), ce qui entraîne render = & ###! myBean.list vide } " .

Autres conseils

< c: if peut être utilisé dans JSF dans la plupart des cas, ainsi que d'autres balises JSTL. Cependant, ils ne peuvent pas être utilisés dans des composants itératifs sur des collections, comme < h: dataTable > . Mais dans votre cas, vous voulez que le < c: if > soit à l’extérieur, c’est donc possible. Cependant, comme l'a souligné romaintaz, il est préférable d'utiliser l'attribut render .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top