& Lt; C: se > tag per la pagina JSF
-
10-07-2019 - |
Domanda
Utilizzato per sviluppare portlet e JPS, quindi ha un dilemma.
task: visualizza < h: dataTable >
solo quando l'elenco non è vuoto
È possibile fornire il tag < c: if >
per la pagina JSF?
Soluzione
Sì, puoi aggiungere tag JSTL nelle tue pagine JSF. Tuttavia, nel tuo caso, puoi semplicemente fare quanto segue:
<h:dataTable value="#{myBean.list}"... rendered="#{myBean.displayTable}">
...
</h:dataTable>
con il seguente metodo in myBean
:
public boolean isDisplayTable() {
return list != null && list.size() > 0;
}
Puoi anche provarlo (non sono sicuro che funzionerà):
<!-- 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>
Nota che puoi usare la parola chiave !
anziché not
nelle espressioni EL (vedi una guida qui sulle espressioni EL), che risulta in rendering = " # {! myBean.list vuoto } ".
Altri suggerimenti
< c: if >
(e altri tag JSTL) possono essere utilizzati nella maggior parte dei casi in JSF. Tuttavia, non può essere utilizzato all'interno di componenti che ripetono in raccolte - come < h: dataTable >
. Ma nel tuo caso, vuoi < c: if >
all'esterno, quindi è possibile. Tuttavia, come ha sottolineato romaintaz, è meglio usare l'attributo rendering
.