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?

È stato utile?

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 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top