...
On commence ensuite une table pour parcourir les entrées du paginateur (on suppose ici que le paginateur est un attribut paginator d'un contrôleur controller) :
| Bloc de code |
|---|
<e<h:dataTable
rendered="#{not empty controller.paginator.visibleItems}"
id="data"
rowIndexVar="variable"
value="#{controller.paginator.visibleItems}"
var="thing" border="0"
style="width:100%"
cellspacing="0"
cellpadding="0">
|
...
On parcourt ensuite des colonnes dans lesquelles on affiche ce que l'on veut, par exemple :
| Bloc de code |
|---|
<t:column>
<e<h:text value="#{thing.value}" />
</t:column>
|
| exercice |
|---|
| Afficher un paginateur sur une page JSF |
|---|
| Afficher un paginateur sur une page JSF |
|---|
|
Afficher le paginateur écrit à l'exercice précédent sur la vue test1.jsp (à la place de la liste précédemment). | solution |
|---|
1. Ajout d'une dataTable dans la page test1.jsp | Bloc de code |
|---|
<%@include file="_include.jsp"%>
<e:page stringsVar="msgs" menuItem="test1"
locale="#{sessionController.locale}">
<%@include file="_navigation.jsp"%>
<h:form id="formTest1">
<e<h:messages />
<e<h:inputText value="#{test1Controller.myInput}" />
<e<h:commandButton value="#{msgs['MESSAGE.ENTRY.SAVE']}" action="#{test1Controller.addEntry}" />
<e<h:commandButton value="SetTest2Value" action="goToTest2">
<t:updateActionListener value="#{test1Controller.myInput}"
property="#{test2Controller.value}" />
</eh:commandButton>
<e<h:dataTable rendered="#{not empty test1Controller.paginator.visibleItems}"
id="data"
rowIndexVar="variable"
value="#{test1Controller.paginator.visibleItems}"
var="entry" border="0"
style="width:100%"
cellspacing="0"
cellpadding="0">
<f:facet name="header">
<h:panelGroup>
<e:paginator id="entryPaginator"
paginator="#{test1Controller.paginator}"
itemsName="#{msgs['ENTRY']}"
onchange="javascript:{simulateLinkClick('formTest1:submitPageSize');}" />
<e:commandButton id="submitPageSize"
action="#{test1Controller.paginator.forceReload}" />
</h:panelGroup>
</f:facet>
<t:column>
<e:text value="#{entry.value}"/>
</t:column>
<t:column>
<e:text value="#{entry.date}"/>
</t:column>
</eh:dataTable>
</h:form>
</e:page>
|
2. Ajout de l'attribut paginator (et les accesseurs) dans Test1Controller et modification de la méthode reset: | Bloc de code |
|---|
private EntryPaginator paginator;
/**
* @see org.esupportail.formation.web.controllers.AbstractDomainAwareBean#reset()
*/
@Override
public void reset() {
super.reset();
paginator = new EntryPaginator(getDomainService());
}
|
|
|
| Remarque |
|---|
Il est avantageux de partir d'un exemple existant pour afficher un paginateur, on pourra par exemple se référer au fichier /webapp/stylesheets/administrators.jsp du projet esup-blank. |
L'intérêt d'un paginateur Hibernate est de ne récupérer de la base de données que les éléments qui doivent être affichés.Cela se fait en étendant la classe AbstractHibernatePaginator<E>, qui possède la méthode abstraite suivante :
...