Условно отображать чистые HTML-элементы
Я бы хотел условно отобразить следующие элементы:
<li>
<h:link outcome="mypage" value="My Value" />
</li>
Итак, мое условие должно определить, будет ли отображаться тег <li>
и все его дочерние элементы. AFAIK, я не могу использовать <f:verbatim>
из-за UIComponent внутри тега <li>
(<h:link>
).
Любые идеи?
Ответы
Ответ 1
Есть еще одна причина не использовать <f:verbatim>
: он устарел в JSF 2.0.
Используйте <ui:fragment>
. Это семантически более корректно, чем <h:panelGroup>
(который сам по себе ничего не делает, когда не указаны конкретные атрибуты на стороне клиента), а также немного меньше накладных расходов.
<ui:fragment rendered="#{bean.show}">
...
</ui:fragment>
(обратите внимание: из-за некоторой ошибки Netbeans, похоже, дергается, что этот атрибут не поддерживается, но это неверно, оно определенно поддерживается)
Ответ 2
Вы можете обернуть элементы внутри h:panelGroup
и использовать свое условие в атрибуте rendered
панели panel.
<h:panelGroup rendered="...">
<li>
<h:link outcome="mypage" value="My Value" />
</li>
<h:panelGroup>