我有一个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
您需要将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。 例如: 我试过了,但没有成功。知道我做错了什么吗? 提前感谢!