Conditional rendering of non-JSF components (plain vanilla HTML and template text)
Solution 1:
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.
See also:
- Alternative to ui:fragment in JSF
- Conditionally displaying JSF components
- How to find out client ID of component for ajax update/render? Cannot find component with expression "foo" referenced from "bar"
- Ajax update/render does not work on a component which has rendered attribute