Ответ 1
Да, используйте атрибут 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. См. Также этот связанный Q & A: Анализ ошибок XHTML: Содержимое элементов должно состоять из хорошо сформированных символьных данных или разметки.
Что касается вашего конкретного варианта использования, допустим, что ссылка передает параметр, как показано ниже:
<a href="page.xhtml?form=1">link</a>
Затем вы можете отобразить форму, как показано ниже:
<h:form rendered="#{param.form eq '1'}">
(#{param}
- неявный объект EL, ссылающийся на Map
, представляющий параметры запроса)