如何更改默认的p:dataTable空白信息(emptyMessage)消息

24
我正在使用PrimeFaces的dataTable组件。当这个表格没有元素时,会显示“没有找到记录”。我想把这个消息改成“没有结果”,并将它变成国际化类型的消息。
我不想使用。
<p:dataTable 
    id="idTable" 
    ...
    emptyMessage="#{messages['general.message.EmptyList']}"
>

对于每个表格。

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


11
我建议向PrimeFaces团队添加这个问题。说实话,我认为(对于具有那种成熟水平的工具)是时候制作包含他们正在使用的所有默认消息的属性文件了,这样就可以像覆盖默认JSF验证消息一样进行覆盖。不仅适用于datatable,而且适用于所有组件。 - partlov
2个回答

39

来自PrimeFaces 3.5 DataTable源代码:

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

1
这个在第6版中仍然硬编码的原因是什么? - sergioFC

-1
在datatable中写入emptyMessage="",例如:
<p:dataTable var="hola"
    value="#{logica.hola}"
    emptyMessage="text you want to appear" >
    </p:dataTable>

1
仅有代码不是完整的答案。请尽量解释清楚,这是一个普遍规则。而且,您没有提供任何新信息,因此您的回答是冗余的,不会提高此处提供的信息。 - L. Guthardt
抱歉。我想说的是,您需要在引号“”之间编写要显示的文本。 - luisja19

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接