Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

Из исходного кода 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: p >

.ui-datatable-empty-message {
    display: none;
}

Ответ 2

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

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