com.interface21.util
Class RefreshablePagedListHolder

java.lang.Object
  |
  +--com.interface21.util.PagedListHolder
        |
        +--com.interface21.util.RefreshablePagedListHolder

public class RefreshablePagedListHolder
extends PagedListHolder

RefreshablePagedListHolder is a PagedListHolder subclass with reloading capabilities. It automatically re-requests the List from the source provider, in case of Locale or filter changes.

Data binding works just like with PagedListHolder. The locale can be specified in Locale's toString syntax, e.g. "locale=en_US". The filter object can be of any custom class, preferably a bean for easy data binding from a request. An instance will simply get passed through to PagedListSourceProvider.loadList. A filter property can be specified via "filter.myFilterProperty", for example.

The scenario in the controller could be: RefreshablePagedListHolder holder = request.getSession("mySessionAttr");
if (holder == null) {
holder = new RefreshablePagedListHolder();
holder.setSourceProvider(new MyAnonymousOrEmbeddedSourceProvider());
holder.setFilter(new MyAnonymousOrEmbeddedFilter());
request.getSession().setAttribute("mySessionAttr", holder);
}
holder.refresh(false); BindException ex = BindUtils.bind(request, listHolder, "myModelAttr");
return ModelAndView("myViewName", ex.getModel());

...

private class MyAnonymousOrEmbeddedSourceProvider implements PagedListSourceProvider {
public List loadList(Locale locale, Object filter) {
MyAnonymousOrEmbeddedFilter filter = (MyAnonymousOrEmbeddedFilter) filter; }

private class MyAnonymousOrEmbeddedFilter {
private String name = "";
public String getName() {
return name; public void setName(String name) {
this.name = name;
}
}

Since:
24.05.2003
Author:
Jean-Pierre Pawlak, Juergen Hoeller
See Also:
PagedListSourceProvider, LocaleEditor

Fields inherited from class com.interface21.util.PagedListHolder
DEFAULT_MAX_LINKED_PAGES, DEFAULT_PAGE_SIZE
 
Constructor Summary
RefreshablePagedListHolder()
          Create a new list holder.
RefreshablePagedListHolder(PagedListSourceProvider sourceProvider)
          Create a new list holder with the given source provider.
 
Method Summary
 java.lang.Object getFilter()
          Return the filter that the source provider should use for loading the list.
 java.util.Locale getLocale()
          Return the Locale that the source provider should use for loading the list.
 PagedListSourceProvider getSourceProvider()
          Return the callback class for reloading the List when necessary.
 void refresh(boolean force)
          Reload the underlying list from the source provider if necessary (i.e. if the locale and/or the filter has changed), and resort it.
 void setFilter(java.lang.Object filter)
          Set the filter object that the source provider should use for loading the list.
 void setLocale(java.util.Locale locale)
          Set the Locale that the source provider should use for loading the list.
 void setSourceProvider(PagedListSourceProvider sourceProvider)
          Set the callback class for reloading the List when necessary.
 
Methods inherited from class com.interface21.util.PagedListHolder
getFirstElementOnPage, getFirstLinkedPage, getLastElementOnPage, getLastLinkedPage, getMaxLinkedPages, getNrOfElements, getNrOfPages, getPage, getPageList, getPageSize, getRefreshDate, getSort, getSource, resort, setMaxLinkedPages, setPage, setPageSize, setSort, setSource
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RefreshablePagedListHolder

public RefreshablePagedListHolder()
Create a new list holder. You'll need to set a source provider to be able to use the holder.
See Also:
setSourceProvider(com.interface21.util.PagedListSourceProvider)

RefreshablePagedListHolder

public RefreshablePagedListHolder(PagedListSourceProvider sourceProvider)
Create a new list holder with the given source provider.
Method Detail

setSourceProvider

public void setSourceProvider(PagedListSourceProvider sourceProvider)
Set the callback class for reloading the List when necessary. If the list is definitely not modifiable, i.e. not locale aware and no filtering, use PagedListHolder.
See Also:
PagedListHolder

getSourceProvider

public PagedListSourceProvider getSourceProvider()
Return the callback class for reloading the List when necessary.

setLocale

public void setLocale(java.util.Locale locale)
Set the Locale that the source provider should use for loading the list. This can either be populated programmatically (e.g. with the request locale), or via binding (using Locale's toString syntax, e.g. "locale=en_US").
Parameters:
locale - the current Locale, or null

getLocale

public java.util.Locale getLocale()
Return the Locale that the source provider should use for loading the list.
Returns:
the current Locale, or null

setFilter

public void setFilter(java.lang.Object filter)
Set the filter object that the source provider should use for loading the list. This will typically be a bean, for easy data binding.
Parameters:
filter - the filter object, or null

getFilter

public java.lang.Object getFilter()
Return the filter that the source provider should use for loading the list.
Returns:
the current filter, or null

refresh

public void refresh(boolean force)
Reload the underlying list from the source provider if necessary (i.e. if the locale and/or the filter has changed), and resort it.
Parameters:
force - whether a reload should be performed in any case


Rod Johnson and Spring contributors 2001-2003.