Условно отображать чистые 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>