如何在JSF中隐藏元素?

时间:2012-04-17 15:33:48

标签: jsf

是否可以根据条件隐藏div等(就像在渲染属性中使用EL一样),而不必将其包含在具有渲染属性的<h:panelGrid ...>等中?它破坏了我的布局。我只需要逻辑,而不是布局。

3 个答案:

答案 0 :(得分:12)

首先,你不应该用h:gridPanel包裹你的元素,这会导致html table

相反,您应该使用h:panelGroup换行,这会在html代码中生成span,您也可以将layout="block"添加到h:panelGroup以使其呈现为div

第二,你隐藏div时不要使用jstl,而是做这样的事情

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

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

在css文件中添加以下内容:

.hide { 
    display: none;
}

INMO 你最好用rendered="#{myBean.renderCondition}"隐藏在JSF中

在这里看看BalusC Conditionally displaying JSF components

答案 1 :(得分:2)

你可以这样做:

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

其中yourBean.property会返回'none'来隐藏div

答案 2 :(得分:-1)

对我来说,它只是在没有括号的情况下工作,例如:

<div style="display:#{!isDisplayed ? 'none' : 'block'}">My Div Content</div>

<h:panelGroup styleClass="#{!isDisplayed ? 'hide' : ''}">My Span Content</h:panelGroup>