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

ahm*_*met 21 datatable jsf messages internationalization primefaces

我正在使用PrimeFaces的dataTable.我得到"没有找到记录." 当table没有元素时 我想将此消息更改为"无结果",并将此消息设为i18n类型.

我不想用

<p:dataTable 
    id="idTable" 
    ...
    emptyMessage="#{messages['general.message.EmptyList']}"
>
Run Code Online (Sandbox Code Playgroud)

对于每张桌子.

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

Bal*_*usC 32

来自PrimeFaces 3.5的DataTable源代码:

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

因此,它是硬编码的,除了黑客攻击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>
Run Code Online (Sandbox Code Playgroud)
<my:dataTable id="foo" value="#{bean.items}">
    <p:column>#{item.foo}</p:column>
    <p:column>#{item.bar}</p:column>
</my:dataTable>
Run Code Online (Sandbox Code Playgroud)

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

.ui-datatable-empty-message {
    display: none;
}
Run Code Online (Sandbox Code Playgroud)