Die PrimeFaces DataTable Komponente ist eine erweiterte Version der Standard-Datatable von JSF. Ein nettes Feature ist es, dass die Leiste für den Paginator (automatischer Seitenumbruch) angepasst werden kann.
Dies kann über das Attribut „paginatorTemplate“ erfolgen:
Beispiel:
<p:dataTable var="a" value="#{tableBean.liste}" paginator="true" rows="10" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" > ... ... </p:dataTable>
Ergebnis:
Showcase: DataTable – Pagination
Jedoch stellte sich die Frage wie der Tag „{CurrentPageReport}“ angepasst werden kann. Notwendig wurde dies, da trotz deutscher Spracheinstellung (Locale de_DE) der Text „(1 of 5)“ auf englisch angezeigt wurde.
Realisiert werden kann dies über ein zusätzliches Attribut der DataTable nämlich „currentPageReportTemplate“.
Damit kann der komplette Ausgabetext des CurrenPageReport-Attributs angepasst werden.
currentPageReportTemplate="(Eintrag: {startRecord} - {endRecord} von {totalRecords}, Seite: {currentPage} von {totalPages})"
Ergebnis:
Diese Einstellung kann auch aus dem Messages-Properties ResourceBundle ausgelesen werden, um je nach Spracheinstellung eine passende Anzeige zu erhalten.
messages.properties
datatbl_pagTmpl={CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown} datatbl_pagRepTmpl=(Eintrag: {startRecord} - {endRecord} von {totalRecords}, Seite: {currentPage} von {totalPages})
Facelet
<p:dataTable var="a" value="#{tableBean.liste}" paginator="true" rows="10" paginatorTemplate="#{msg['datatbl_pagTmpl']}" currentPageReportTemplate="#{msg['datatbl_pagRepTmpl']}"> ... ... </p:dataTable>
Wow, genau das was ich gesucht habe. Vielen Dank!
Super. Vielen Dank. Das hat mir viel Ausprobieren gespart.
Vielen Dank, das hab ich gesucht:)
Vielen Dank – Sie haben mir wahrlich geholfen!
Danke! Aber wie kann man die Darstellung von zB totalRecords ändern? zB möchte ich bei >100000 Einträgen einen Trennpunkt nach den ersten drei Ziffern. (100.000)