I think this would be best implemented using a stateful page, its certainly a lot simpler to explain and is a good topic for the introduction section.
regards Malcolm Edgar On Tue, Jun 30, 2009 at 6:19 AM, <[email protected]> wrote: > Author: sabob > Date: Mon Jun 29 20:19:22 2009 > New Revision: 789435 > > URL: http://svn.apache.org/viewvc?rev=789435&view=rev > Log: > preserve advanced table sort and page state between edits > > Modified: > > incubator/click/trunk/click/examples/src/org/apache/click/examples/page/EditCustomer.java > > incubator/click/trunk/click/examples/src/org/apache/click/examples/page/introduction/AdvancedTable.java > > Modified: > incubator/click/trunk/click/examples/src/org/apache/click/examples/page/EditCustomer.java > URL: > http://svn.apache.org/viewvc/incubator/click/trunk/click/examples/src/org/apache/click/examples/page/EditCustomer.java?rev=789435&r1=789434&r2=789435&view=diff > ============================================================================== > --- > incubator/click/trunk/click/examples/src/org/apache/click/examples/page/EditCustomer.java > (original) > +++ > incubator/click/trunk/click/examples/src/org/apache/click/examples/page/EditCustomer.java > Mon Jun 29 20:19:22 2009 > @@ -18,14 +18,18 @@ > */ > package org.apache.click.examples.page; > > +import java.util.HashMap; > +import java.util.Map; > import javax.annotation.Resource; > > import org.apache.click.Page; > +import org.apache.click.control.ActionLink; > import org.apache.click.control.Checkbox; > import org.apache.click.control.FieldSet; > import org.apache.click.control.Form; > import org.apache.click.control.HiddenField; > import org.apache.click.control.Submit; > +import org.apache.click.control.Table; > import org.apache.click.control.TextField; > import org.apache.click.examples.control.InvestmentSelect; > import org.apache.click.examples.domain.Customer; > @@ -56,6 +60,11 @@ > > // Public variables can automatically have their value set by request > parameters > @Bindable public Integer id; > + �...@bindable public String actionLink; > + �...@bindable public int page; > + �...@bindable public String column; > + �...@bindable public boolean ascending; > + �...@bindable public boolean sort; > > private HiddenField idField = new HiddenField("id", Integer.class); > > @@ -102,6 +111,13 @@ > */ > @Override > public void onGet() { > + // Store the Page public properties state in hidden fields > + form.add(new HiddenField(Table.PAGE, page)); > + form.add(new HiddenField(Table.COLUMN, column)); > + form.add(new HiddenField(Table.ASCENDING, ascending)); > + form.add(new HiddenField(Table.SORT, sort)); > + form.add(new HiddenField(ActionLink.ACTION_LINK, actionLink)); > + > if (id != null) { > Customer customer = customerService.getCustomerForID(id); > > @@ -125,7 +141,14 @@ > > String referrer = referrerField.getValue(); > if (referrer != null) { > - setRedirect(referrer); > + // Pass the Page public properties to the referring page > + Map params = new HashMap(); > + params.put(Table.PAGE, page); > + params.put(Table.COLUMN, column); > + params.put(Table.SORT, sort); > + params.put(Table.ASCENDING, ascending); > + params.put(ActionLink.ACTION_LINK, actionLink); > + setRedirect(referrer, params); > } else { > setRedirect(HomePage.class); > } > > Modified: > incubator/click/trunk/click/examples/src/org/apache/click/examples/page/introduction/AdvancedTable.java > URL: > http://svn.apache.org/viewvc/incubator/click/trunk/click/examples/src/org/apache/click/examples/page/introduction/AdvancedTable.java?rev=789435&r1=789434&r2=789435&view=diff > ============================================================================== > --- > incubator/click/trunk/click/examples/src/org/apache/click/examples/page/introduction/AdvancedTable.java > (original) > +++ > incubator/click/trunk/click/examples/src/org/apache/click/examples/page/introduction/AdvancedTable.java > Mon Jun 29 20:19:22 2009 > @@ -100,5 +100,13 @@ > public void onRender() { > List list = customerService.getCustomers(); > table.setRowList(list); > + > + // Pass the Table paging and sorting parameters to the link's target > + // page: 'EditCustomer' > + editLink.setParameter(Table.PAGE, > String.valueOf(table.getPageNumber())); > + editLink.setParameter(Table.COLUMN, table.getSortedColumn()); > + editLink.setParameter(Table.SORT, > Boolean.toString(table.isSorted())); > + editLink.setParameter(Table.ASCENDING, > Boolean.toString(table.isSortedAscending())); > + editLink.setParameter(ActionLink.ACTION_LINK, > table.getControlLink().getName()); > } > } > > >
