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

Posted

技术标签:

【中文标题】如何更改默认 p:dataTable emptyMessage 消息【英文标题】:How to change default p:dataTable emptyMessage message 【发布时间】:2013-01-29 03:22:43 【问题描述】:

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

我不想使用

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

每张桌子。

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

【问题讨论】:

我建议向 PrimeFaces 团队添加问题。老实说,我认为是时候(对于具有这种成熟度的工具)使用它们正在使用的所有默认消息制作属性文件,因此可以像那些默认的 JSF 验证消息一样覆盖它。不仅适用于数据表,还适用于所有组件。 【参考方案1】:

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

<p:dataTable var="hola"
    value="#logica.hola"
    emptyMessage="text you want to appear" >
    </p:dataTable>

【讨论】:

纯代码并不是一个完整的答案。请解释你自己,这是一个通用规则。但此外,您没有提供任何新信息,因此您的回答是多余的,并没有改善此处提供的信息。 对不起。我想说的是你写了你想出现在引号之间的文字“”【参考方案2】:

来自 PrimeFaces 3.5 DataTable 源代码:

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

因此,它是硬编码的,除了破解 PrimeFaces 源或创建 tagfile (not composite!) &lt;my:dataTable&gt; 外,没有其他方法可以在一个地方更改它,该 &lt;p:dataTable&gt; 使用所需的消息集包装 &lt;p:dataTable&gt;

<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;

【讨论】:

在版本 6 中是否有任何理由要硬编码?

以上是关于如何更改默认 p:dataTable emptyMessage 消息的主要内容,如果未能解决你的问题,请参考以下文章

将样式应用于 p:datatable 中的 Header

在 <p:ajax event="cellEdit"> 完成时更新整个 <p:dataTable>

如何从 p:dataTable 本身对 p:dataTable 进行 ajax 更新?

如何在 p:dataTable 中使用 p:graphicImage 和 StreamedContent? [复制]

如何在 <p:dataTable> 中一次展开一行?

如何在 PrimeFaces 3.0 的 p:dataTable 中设置 p:column 的宽度?