tag para JSF página:
-
10-07-2019 - |
Pergunta
Usado para desenvolver portlets e JPS de, assim que tem um dilema.
tarefa: exibição <h:dataTable>
apenas quando a lista não está vazia
É possível fornecer tag <c:if>
para JSF página?
Solução
Sim, você pode adicionar tags JSTL em suas páginas JSF. No entanto, no seu caso, você pode simplesmente fazer o seguinte:
<h:dataTable value="#{myBean.list}"... rendered="#{myBean.displayTable}">
...
</h:dataTable>
com o seguinte método em myBean
:
public boolean isDisplayTable() {
return list != null && list.size() > 0;
}
Você também pode tentar isso (não tenho certeza se ele vai trabalhar):
<!-- 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>
Note que você pode usar o !
em vez da palavra-chave not
nas expressões EL (veja um guia aqui sobre expressões EL), que resulta em rendered="#{!empty myBean.list}"
.
Outras dicas
<c:if>
(e outras tags JSTL) pode ser usado em JSF na maioria dos casos. No entanto, o não pode ser usado dentro de componentes que iterate em coleções - como <h:dataTable>
. Mas no seu caso, você quer o exterior <c:if>
, por isso é possível. No entanto, como romaintaz apontou, é melhor usar o atributo rendered
.