Как изменить сообщение по умолчанию p: dataTable emptyMessage

Я использую dataTable PrimeFaces. Я не нашел никаких записей."когда в таблице нет элемента. Я хочу изменить это сообщение на что-то вроде "нет результата" и сделать это сообщение типом i18n.

Я не хочу использовать

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

для каждой таблицы.

Как изменить p: dataTable default emptyMessage сообщение?

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 (не композит!) <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;
}

напишите emptyMessage= "" внутри datatable Ej:

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