Wednesday August 05, 2009
TOTD #89: How to add pagination to an Apache Wicket application
TOTD
#86 explained how to get started with deploying a Apache Wicket
application on GlassFish.
This Tip Of The Day (TOTD) will show
how to add pagination to your Wicket application.
The blog entry "JPA/Hibernate and Wicket Repeating Views with Netbeans"
Part
1 and 2
explain in detail how to create a CRUD application using NetBeans, JPA,
Hibernate and Wicket. This blog uses the data created in TOTD
#38 for the database table.

| <html> <head> <title>Wicket Quickstart Archetype Homepage</title> </head> <body> <strong>Wicket Quickstart Archetype Homepage</strong> <br/><br/> <span wicket:id="message">message will be here</span> <table> <tr> <th>ID</th> <th>Abbreviation</th> <th>Name</th> </tr> <tr wicket:id="rows"> <td><span wicket:id="id">ID</span></td> <td><span wicket:id="abbrev">Abbreviation</span></td> <td><span wicket:id="name">Name</span></td> </tr> </table> </body> </html> |
| package org.glassfish.samples; import java.util.Iterator; import org.apache.wicket.PageParameters; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.markup.repeater.data.DataView; import org.apache.wicket.markup.repeater.data.IDataProvider; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.LoadableDetachableModel; import org.glassfish.samples.controller.StatesJpaController; import org.glassfish.samples.model.States; /** * Homepage */ public class HomePage extends WebPage { private static final long serialVersionUID = 1L; // TODO Add any page properties or variables here /** * Constructor that is invoked when page is invoked without a session. * * @param parameters * Page parameters */ public HomePage(final PageParameters parameters) { // Add the simplest type of label add(new Label("message", "If you see this message wicket is properly configured and running")); // TODO Add your page's components here // create a Data Provider IDataProvider statesProvider = new IDataProvider() { public Iterator iterator(int first, int count) { StatesJpaController sc = new StatesJpaController(); return sc.findStatesEntities(count, first).iterator(); } public int size() { StatesJpaController sc = new StatesJpaController(); return sc.getStatesCount(); } public IModel model(final Object object) { return new LoadableDetachableModel() { @Override protected States load() { return (States)object; } }; } public void detach() { } }; // TODO Add your page's components here DataView dataView = new DataView("rows", statesProvider) { @Override protected void populateItem(Item item) { States state = (States)item.getModelObject(); item.setModel(new CompoundPropertyModel(state)); item.add(new Label("id")); item.add(new Label("abbrev")); item.add(new Label("name")); } }; add(dataView); } } |
| <?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="helloworld" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <class>org.glassfish.samples.model.States</class> <properties> <property name="hibernate.connection.username" value="app"/> <property name="hibernate.connection.driver_class" value="org.apache.derby.jdbc.ClientDriver"/> <property name="hibernate.connection.password" value="app"/> <property name="hibernate.connection.url" value="jdbc:derby://localhost:1527/sample"/> </properties> </persistence-unit> </persistence> |
| DataView dataView = new DataView("rows", statesProvider, 5) |
| dataView.setItemsPerPage(5); |
| <span wicket:id="pager">message will be here</span><br> |
|
PagingNavigator pager = new PagingNavigator("pager", dataView); add(pager); |



Posted by Arun Gupta in web2.0 | Comments[3]
|
|
|
|
|
Today's Page Hits: 3692
Total # blog entries: 1007