Вопрос

Используется для разработки портлетов и 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 .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top