如何从 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>