& Lt; C: если & GT; тег для страницы JSF
-
10-07-2019 - |
Вопрос
Используется для разработки портлетов и JPS, поэтому стоит перед дилеммой.
task: показывать < h: dataTable >
только тогда, когда список не пуст
Можно ли предоставить тег < c: if >
для страницы JSF?
Решение
Да, вы можете добавлять теги JSTL на свои страницы JSF. Однако в вашем случае вы можете просто сделать следующее:
<h:dataTable value="#{myBean.list}"... rendered="#{myBean.displayTable}">
...
</h:dataTable>
с помощью следующего метода в myBean
:
public boolean isDisplayTable() {
return list != null && list.size() > 0;
}
Вы также можете попробовать это (не уверен, будет ли это работать):
<!-- 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>
Обратите внимание, что в выражениях EL вы можете использовать ключевое слово !
вместо ключевого слова not
(см. руководство here о выражениях EL), что приводит к render = " # {! empty myBean.list } & Quot;. код> р>
Другие советы
< c: if >
(и другие теги JSTL) можно использовать в JSF в большинстве случаев. Однако нельзя использовать внутри компонентов, которые выполняют итерации в коллекциях, например, < h: dataTable >
. Но в вашем случае вы хотите, чтобы < c: if >
находился снаружи, поэтому это возможно. Однако, как указал romaintaz, лучше использовать атрибут render
.