23

我正在使用 PrimeFaces 的数据表。我收到“未找到记录”。当表没有元素时。我想将此消息更改为“无结果”之类的内容并将此消息设为 i18n 类型。

我不想用

<p:dataTable 
    id="idTable" 
    ...
    emptyMessage="#{messages['general.message.EmptyList']}"
>

对于每张桌子。

如何更改 p:dataTable 默认emptyMessage消息?

4

2 回答 2

37

来自 PrimeFaces 3.5DataTable源代码:

210    public java.lang.String getEmptyMessage() {
211        return (java.lang.String) getStateHelper().eval(PropertyKeys.emptyMessage, "No records found.");
212    }

因此,它是硬编码的,除了破解 PrimeFaces 源或创建一个标签文件(不是复合的!) 之外,没有办法在一个地方更改它,它用所需的消息集<my:dataTable>包装。<p:dataTable>

<ui:composition ...>
    <p:dataTable id="#{id}" value="#{value}" var="item" 
        emptyMessage="#{messages['general.message.EmptyList']}">
        <ui:insert />
    </p:dataTable>
</ui:composition>
<my:dataTable id="foo" value="#{bean.items}">
    <p:column>#{item.foo}</p:column>
    <p:column>#{item.bar}</p:column>
</my:dataTable>

如果您实际上不想更改消息,而只想完全隐藏它,那么您也可以选择纯 CSS 解决方案:

.ui-datatable-empty-message {
    display: none;
}
于 2013-02-13T14:50:29.683 回答
1

在数据表 Ej 中写入 emptyMessage="":

<p:dataTable var="hola"
    value="#{logica.hola}"
    emptyMessage="text you want to appear" >
    </p:dataTable>
于 2017-12-14T09:23:15.800 回答