Условное отображение компонентов JSF - PullRequest
73 голосов
/ 02 февраля 2011

Во-первых, я новичок в Java EE, пришёл из опыта разработки ASP .NET.Я прошел через сеть, и я мог бы пропустить это, но, похоже, нет простых и простых учебных пособий о том, как я мог бы подключить класс bean-компонентов к компонентам JSF.Пример, как это, в настоящее время я пытаюсь создать страницу JSF, где есть набор ссылок в виде строки меню и набор форм.Что я планирую сделать, так это то, что при нажатии на ссылку будет отображаться конкретная форма.

В ASP.NET я мог легко получить элемент, а затем установить атрибут для отображения.Мне интересно, есть ли простой способ (черт возьми, даже любой способ) сделать это в JSF.

Формы уже находятся на странице, это просто вопрос установки атрибута "render" в true, когдаЯ нажимаю на конкретную ссылку.

Ответы [ 2 ]

145 голосов
/ 02 февраля 2011

Да, используйте атрибут rendered.

<h:form rendered="#{some boolean condition}">

Обычно вы привязываете его к модели, а не позволяете модели захватить компонент и манипулировать им.

Например,

<h:form rendered="#{bean.booleanValue}" />
<h:form rendered="#{bean.intValue gt 10}" />
<h:form rendered="#{bean.objectValue eq null}" />
<h:form rendered="#{bean.stringValue ne 'someValue'}" />
<h:form rendered="#{not empty bean.collectionValue}" />
<h:form rendered="#{not bean.booleanValue and bean.intValue ne 0}" />
<h:form rendered="#{bean.enumValue eq 'ONE' or bean.enumValue eq 'TWO'}" />

Обратите внимание на важность операторов EL на основе ключевых слов , таких как gt, ge, le и lt вместо >, >=, <= и < в виде угловых скобок < и > являются зарезервированными символами в XML.См. Также связанные вопросы и ответы: Ошибка анализа XHTML: содержимое элементов должно состоять из правильно сформированных символьных данных или разметки .

Что касается вашего конкретного варианта использования, давайте предположим, что ссылкапередавая параметр, как показано ниже:

<a href="page.xhtml?form=1">link</a>

Затем вы можете отобразить форму, как показано ниже:

<h:form rendered="#{param.form eq '1'}">

(#{param} является неявным объектом EL, ссылающимся на Map представляет параметры запроса)

См. Также:

11 голосов
/ 12 октября 2012

В дополнение к предыдущему сообщению вы можете иметь

<h:form rendered="#{!bean.boolvalue}" />
<h:form rendered="#{bean.textvalue == 'value'}" />

Jsf 2.0

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