Условное отображение компонентов JSF


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

хороший пример, как это, в настоящее время я пытаюсь создать страницу JSF, где есть набор ссылок в меню и набор форм. То, что я планирую сделать, это при нажатии на ссылку, определенную форму будет оказано.

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

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

2 69

2 ответа:

да, используйте .

<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'}">

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

посмотреть также:

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

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

Jsf 2.0