Projets

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

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.

Écriture d'un paginateur Hibernate

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 :

...