I'm trying to conditionally render a <tr>
therefore I cannot use <h:panelGroup>
as it will render to <span> or <div>
My current (working) approach is the following:
<h:outputFormat rendered="#{negotiator.maySend}">
<tr> my tr stuff </tr>
</h:outputFormat>
This works, but I'm not sure if that's the way to abuse <h:outputFormat>
- before that I used <h:outputLabel>
but this was rendered to <label>
in IE.
I have also read the answers to this question, but as mentioned above, they won't work for me because of the <tr>
: How to not render whole block in JSF?
I cannot use
<h:panelGroup>
as it will render to<span>
or<div>
Apparently you didn't test it carefully. The <h:panelGroup>
won't render anything if you don't specify attributes which should end up in the client side, like layout
, id
, styleClass
, etc.
Thus, this should technically perfectly work fine.
<h:panelGroup rendered="#{negotiator.maySend}">
<tr> my tr stuff </tr>
</h:panelGroup>
However, better for the main purpose would be to use <ui:fragment>
.
<ui:fragment rendered="#{negotiator.maySend}">
<tr> my tr stuff </tr>
</ui:fragment>
This is by the way also possible with <f:verbatim>
, but this is deprecated since JSF 2.0 as it's designed specifically for usage in JSP.