10

Is it possible to hide a div etc based on a condition (like you do in rendered attribute with EL) without having to wrap it in a <h:panelGrid ...> etc with a rendered attribute? It ruins my layout. I just need it for the logic, not the layout.

Matt Handy
  • 29,855
  • 2
  • 89
  • 112
LuckyLuke
  • 47,771
  • 85
  • 270
  • 434

2 Answers2

17

first of all you should not wrap your elements with h:gridPanel which results in html table

instead you should wrap with h:panelGroup which results in span in html code , you can also add layout="block" to h:panelGroup to make it rendered as div

second you dont not use jstl when hiding div instead do something like this

<div style="display:#{(myBean.hideSomeDiv)?'none':'block'}">My Div Content</div>

or

<h:panelGroup styleClass="#{(myBean.hideSomeDiv)?'hide':''">My Span Content</h:panelGroup>

where in css file add this :

.hide { 
    display: none;
}

INMO you always better hide in JSF with rendered="#{myBean.renderCondition}"

Take a look at BalusC over here Conditionally displaying JSF components

Community
  • 1
  • 1
Daniel
  • 36,833
  • 10
  • 119
  • 200
3

You could just do this:

<div style="display:#{yourBean.property}"></div>

Where yourBean.property would return 'none' to hide the div

roel
  • 2,005
  • 3
  • 26
  • 41