当前位置: 首页 > 知识库问答 >
问题:

有条件呈现列时列标题不可见

法玮
2023-03-14

我有一个h:dataTable。我想有条件地呈现一行,如下所示:

<h:dataTable value="#{myController.entities}" var="entity">
 <h:column rendered="#{entity.selected}">
  <f:facet name="header">
   <h:outputText value="header" />
  </f:facet>
  <h:outputText value="#{entity.name}" />
 </h:column>
</h:dataTable>

在我的控制器中,有变量list 实体,它有getter和setter。

有人能帮我一下吗?我是JSF的新手,这个错误可能很愚蠢,而且很容易解决,但请帮助我解决它。多谢了。

我正在发布我在尝试上面的代码时得到的输出。

**Header**

name 0

name 1

name 2

name 3

name 4

此输出仅使用 显示datatable,而不尝试有条件地呈现它。可以看到标题。

name 1

name 3

共有1个答案

白侯林
2023-03-14

您需要将render条件放在单元格上,而不是列上。

<h:dataTable value="#{myController.entities}" var="entity">
 <h:column>
  <f:facet name="header">
   <h:outputText value="header" />
  </f:facet>
  <h:outputText value="#{entity.name}" rendered="#{entity.selected}" />
 </h:column>
</h:dataTable>

或者,如果有多个组件或纯文本表示单元格内容,则将其包装在 中。

<h:dataTable value="#{myController.entities}" var="entity">
 <h:column>
  <f:facet name="header">
   header
  </f:facet>
  <h:panelGroup rendered="#{entity.selected}">
   Blah blah #{entity.name} blah blah
  </h:panelGroup>
 </h:column>
</h:dataTable>

(注意:您不一定在所有地方都需要h:outputtext,请参见是否建议对所有内容都使用h:outputtext?)

table {
    empty-cells: hide;
}

一个完全不同的替代方案是提供一个新的模型,它只包含所需的实体:

<h:dataTable value="#{myController.selectedEntities}" var="entity">
 <h:column>
  <f:facet name="header">
   header
  </f:facet>
  #{entity.name}
 </h:column>
</h:dataTable>
 类似资料:
  • 问题内容: 在我的JTable中不可见的列标题我已经创建了一个JPanel并将JTable添加到JPanel中。 问题答案: JTable的API指出: “请注意,如果希望在独立视图(JScrollPane外部)中使用JTable并希望显示标题,则可以使用getTableHeader()获取它并单独显示它。” 或者只是将表添加到滚动窗格,然后将滚动窗格添加到面板…

  • 我想动态呈现JSX,如下所示; 因此,我希望仅当“showSubTextAndIcon”为true时,才渲染该子文本和图标。现在,上述方法不起作用,我得到一个语法错误,说:; 相邻的JSX元素必须包装在一个封闭的标记中。你想要一个JSX片段吗 这工作,如果我添加一个包装列布局。然而,当show SubTextAndIcon是真的时,这会扰乱我的布局。 注意:列布局是从材料ui库派生的。

  • 我目前在使用PrimeFaces 4.0的dataTable中的列的呈现属性上有一个小问题。我的表中有一列不应该总是显示,所以我使用了它的呈现属性并从我的支持bean中获取值。这是第6列也是最后一列。dataTable位于一个p:对话框中,该对话框将显示在方法的末尾。 渲染属性似乎工作正常,因为当showColumn为false时,该列将不会显示,反之亦然,但存在一个问题。如图所示,“未找到记录”

  • 对于在其生命周期的某个点隐藏的组件,呈现它的最佳方式是什么?1)渲染组件,但不显示它(显示:无)。2)只在需要时渲染组件。什么对性能更好?如果组件的道具和状态稍后更新,是否最好让组件存在,但隐藏在虚拟DOM中? 或者这个:

  • JSF的 @ViewScoped不可用,因为它与CDI冲突 提交表单时,JSF动态呈现组件的值变为空 有条件呈现的输入组件不更新值 未调用CommandButton/CommandLink/Ajax操作/Listener方法或未更新输入值 我能想到导致这种行为的几种情况: “rendered”似乎是基于backing bean中的值重新计算的,而不是UI中给出的新值(如果默认为1,则提交时再次为1

  • 如何使用JSX进行条件渲染? 例如,我这里有div,如果props的值为null,我想呈现文本“不知道”,否则如果props不等于null,则呈现props。 例如: 我试过了,但没有成功。知道我做错了什么吗? 提前感谢!