如何从 primefaces TreeTable 中删除 emptyMessage
How to remove emptyMessage from primefaces TreeTable
有没有办法完全删除它,我不是说使用 emptyMessage="" 我的意思是完全没有它,在下面的图片中我有一个空的树表,它就像一个header 用于其后的树表。
具有默认空消息的可树表:
使用 emptyMessage="":
以上的None就是我想要的
我需要将 2 树表分开的灰线消失,这在 PrimeFaces 3.5 中没有发生,现在只在 7.0 中发生,有办法吗? :) 在 3.5 中你可以有一个空值的树表,现在这是不可能的,所以在 managedbean 中我在 postconstruct 和 getter 上给它一个默认值,当它为空时也是如此,但这不是我认为我正在寻找的结果很重要,只是为了让您了解为什么以前没有发生过。
正如对您问题的评论已经暗示的那样 - 您可以通过一些简单的 CSS 和使用 emptyMessage=""
来解决这个问题。这是一个简单的例子,说明如何做到这一点;
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui" xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Empty treetable styling</title>
<style>
tbody#form\:first_data > tr > td:empty {
display: none;
}
</style>
</h:head>
<h:body>
<h:form id="form">
<p:treeTable id="first" emptyMessage="" value="#{treeBackingBean.root}">
<f:facet name="header">First TreeTable</f:facet>
</p:treeTable>
<p:treeTable emptyMessage="" value="#{treeBackingBean.root}">
<f:facet name="header">Second TreeTable</f:facet>
</p:treeTable>
</h:form>
</h:body>
</html>
我们利用 :empty
CSS 选择器结合 emptyMessage=""
将在生成的树表中生成空 td
元素这一事实。然后我们使用 display: none;
.
隐藏元素
为了完整起见,这里是本示例使用的辅助 bean;
@Data
@Named
@ViewScoped
public class TreeBackingBean implements Serializable {
private TreeNode root;
@PostConstruct
private void init() {
root = new DefaultTreeNode("Testing", null);
}
}
生成的树表应该类似于下图;
我们只在此处设置第一个树表的样式,但正如您所见,它删除了您在问题中遇到的 "empty area" 。出于比较目的,我保留了第二个树表未受任何自定义样式规则影响。
第一个渲染的树形树网格(PrimeFaces 为第一个树形图生成的代码)如下所示——您还可以清楚地看到之前定义的样式规则匹配的位置;
<table role="treegrid">
<thead id="form:first_head">
<tr role="row"></tr>
</thead>
<tfoot></tfoot>
<tbody id="form:first_data" class="ui-treetable-data ui-widget-content">
<tr class="ui-widget-content ui-treetable-empty-message">
<td colspan="0"></td>
</tr>
</tbody>
</table>
有没有办法完全删除它,我不是说使用 emptyMessage="" 我的意思是完全没有它,在下面的图片中我有一个空的树表,它就像一个header 用于其后的树表。
具有默认空消息的可树表:
使用 emptyMessage="":
None就是我想要的
我需要将 2 树表分开的灰线消失,这在 PrimeFaces 3.5 中没有发生,现在只在 7.0 中发生,有办法吗? :) 在 3.5 中你可以有一个空值的树表,现在这是不可能的,所以在 managedbean 中我在 postconstruct 和 getter 上给它一个默认值,当它为空时也是如此,但这不是我认为我正在寻找的结果很重要,只是为了让您了解为什么以前没有发生过。
正如对您问题的评论已经暗示的那样 - 您可以通过一些简单的 CSS 和使用 emptyMessage=""
来解决这个问题。这是一个简单的例子,说明如何做到这一点;
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui" xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Empty treetable styling</title>
<style>
tbody#form\:first_data > tr > td:empty {
display: none;
}
</style>
</h:head>
<h:body>
<h:form id="form">
<p:treeTable id="first" emptyMessage="" value="#{treeBackingBean.root}">
<f:facet name="header">First TreeTable</f:facet>
</p:treeTable>
<p:treeTable emptyMessage="" value="#{treeBackingBean.root}">
<f:facet name="header">Second TreeTable</f:facet>
</p:treeTable>
</h:form>
</h:body>
</html>
我们利用 :empty
CSS 选择器结合 emptyMessage=""
将在生成的树表中生成空 td
元素这一事实。然后我们使用 display: none;
.
为了完整起见,这里是本示例使用的辅助 bean;
@Data
@Named
@ViewScoped
public class TreeBackingBean implements Serializable {
private TreeNode root;
@PostConstruct
private void init() {
root = new DefaultTreeNode("Testing", null);
}
}
生成的树表应该类似于下图;
第一个渲染的树形树网格(PrimeFaces 为第一个树形图生成的代码)如下所示——您还可以清楚地看到之前定义的样式规则匹配的位置;
<table role="treegrid">
<thead id="form:first_head">
<tr role="row"></tr>
</thead>
<tfoot></tfoot>
<tbody id="form:first_data" class="ui-treetable-data ui-widget-content">
<tr class="ui-widget-content ui-treetable-empty-message">
<td colspan="0"></td>
</tr>
</tbody>
</table>