我正在尝试有条件地渲染
<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 中使用而设计的。
实现此目的的一种方法是将表格行的显示样式设置为无。如果满足你的条件,然后使用javascript将样式设置为table-row。
像这样:
<tr id="tableRow" style="display: none;">
my tr stuff
</tr>
JS:
const show = true; // Do some logic here
if (show) {
document.getElementById("tableRow").style.display = "table-row";
}