тег <c: if> для страницы JSF - PullRequest
1 голос
/ 30 ноября 2009

Используется для разработки портлетов и JPS, поэтому возникает дилемма.

задача: отображать <h:dataTable> только когда список не пустой

Можно ли предоставить тег <c:if> для страницы JSF?

Ответы [ 2 ]

6 голосов
/ 30 ноября 2009

Да, вы можете добавить теги 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>

Обратите внимание, что вы можете использовать ! вместо ключевого слова not в выражениях EL (см. Руководство здесь о выражениях EL), что приводит к rendered="#{!empty myBean.list}".

1 голос
/ 30 ноября 2009

<c:if> (и другие теги JSTL) могут быть использованы в JSF в большинстве случаев. Тем не менее, нельзя использовать внутри компонентов, которые перебирают коллекции - как <h:dataTable>. Но в вашем случае вы хотите <c:if> снаружи, так что это возможно. Однако, как указал romaintaz, лучше использовать атрибут rendered.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...