< c: si > tag pour la page JSF
-
10-07-2019 - |
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?
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
.