Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Conditionally display pure HTML elements

I would like to conditionally display the following elements:

<li>
  <h:link outcome="mypage" value="My Value" />
</li>

So my condition should determine if the <li> tag and all it's children would be displayed or not. AFAIK, I can't use <f:verbatim> because of the UIComponent inside the <li> tag (<h:link>).

Any ideas?

like image 252
bluefoot Avatar asked Jun 04 '11 16:06

bluefoot


2 Answers

There's another reason to not use <f:verbatim>: it's deprecated in JSF 2.0.

Use <ui:fragment>. It's semantically more correct than a <h:panelGroup> (which by itself indeed renders nothing when no client side specific attributes are specified) and has also a bit less overhead.

<ui:fragment rendered="#{bean.show}">
    ...
</ui:fragment>

(note: due to some bug, Netbeans seems to jerk that this attribute isn't supported, but this is untrue, it's definitely supported)

like image 86
BalusC Avatar answered Sep 30 '22 08:09

BalusC


You can wrap your elements inside a h:panelGroup and use your condition on the rendered attribute of the panelgroup.

<h:panelGroup rendered="...">
  <li>
    <h:link outcome="mypage" value="My Value" />
  </li>
<h:panelGroup>
like image 39
Giorgos Dimtsas Avatar answered Sep 30 '22 10:09

Giorgos Dimtsas