Условное отображение компонентов JSF
Во-первых, я новичок в Java EE и пришел из опыта разработки ASP .NET. Я прошел через сеть, и я мог бы пропустить это, но, похоже, нет простых и простых учебных пособий о том, как я мог бы подключить класс bean-компонента к компонентам JSF.
Хороший пример подобен этому, в настоящее время я пытаюсь создать страницу JSF, где есть набор ссылок в виде строки меню и набора форм. Что я планирую сделать, так это то, что при нажатии на ссылку будет отображаться конкретная форма.
В ASP .NET я мог легко получить элемент, а затем установить атрибут для отображения. Мне интересно, есть ли простой способ (черт возьми, даже любой способ) сделать это в JSF.
Формы уже находятся на странице, это просто вопрос установки атрибута render на true, когда я нажимаю на конкретную ссылку.
3 ответа
Да, используйте 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
представление параметров запроса)
Смотрите также:
В дополнение к предыдущему посту вы можете иметь
<h:form rendered="#{!bean.boolvalue}" />
<h:form rendered="#{bean.textvalue == 'value'}" />
JSF 2.0
Точно так же мы можем отключить компонент в форме, для этого мы будем использовать «disabled».
Этот атрибут принимает значение true / false. Если выражение истинно, то указанный компонент будет отключен, в противном случае он будет включен.
Пример: я хочу отключить кнопку для какого-то условия.
<p:commandButton id="addInformedConsentBtn"
value="Add Comments" title="Add Comments"
disabled="#{backingBean.booleanResultOrVariable}">
</p:commandButton>