我试图有条件地渲染<tr>
,因此我不能使用<h:panelGroup>
,因为它会渲染到<span> or <div>
我目前的(工作)方法如下:
<h:outputFormat rendered="#{negotiator.maySend}">
<tr> my tr stuff </tr>
</h:outputFormat>
这是有效的,但我不确定这是否是滥用<h:outputFormat>
的方式-之前我使用<h:outputLabel>
,但这是在IE中渲染为<label>
。
我也读了这个问题的答案,但如上所述,他们不会为我工作,因为<tr>
:如何不渲染整个块在JSF?
我不能使用
<h:panelGroup>
,因为它会渲染到<span>
或<div>
显然你没有仔细测试它。如果你不指定应该在客户端结束的属性,<h:panelGroup>
不会渲染任何东西,如layout
, id
, styleClass
等。
因此,这在技术上应该是完美的。
<h:panelGroup rendered="#{negotiator.maySend}">
<tr> my tr stuff </tr>
</h:panelGroup>
然而,更好的主要目的是使用<ui:fragment>
。
<ui:fragment rendered="#{negotiator.maySend}">
<tr> my tr stuff </tr>
</ui:fragment>
顺便说一下,<f:verbatim>
也可以这样做,但自JSF 2.0以来,这已经被弃用了,因为它是专门为在JSP中使用而设计的。
参见:
- JSF中ui:fragment的替代方案
- 有条件地显示JSF组件
- 如何找出ajax更新/渲染组件的客户端ID ?找不到带有表达式"foo"的组件引用自"bar"
- Ajax更新/渲染不能在具有渲染属性 的组件上工作