javax.faces.model
Class DataModel<E>

java.lang.Object
  extended by javax.faces.model.DataModel<E>
All Implemented Interfaces:
Iterable<E>
Direct Known Subclasses:
ArrayDataModel, ListDataModel, ResultDataModel, ResultSetDataModel, ScalarDataModel

public abstract class DataModel<E>
extends Object
implements Iterable<E>

Represents the data presented by a UIData component, together with some state information about the currently selected row within the datalist for use by listeners on UIData components. This class allows managed bean code to avoid binding directly to UIData components for typical uses.

Note that DataModel and its standard subclasses are not serializable, as there is no state in a DataModel object itself that needs to be preserved between render and restore-view. UIData components therefore do not store their DataModel when serialized; they just evaluate their "value" EL expression to refetch the object during the apply-request-values phase.

Because DataModel is not serializable, any managed bean that needs to be serialized and which has a member of type DataModel should therefore mark that member transient. If there is a need to preserve the datalist contained within the DataModel then ensure a reference to that list is stored in a non-transient member, or use a custom serialization method that explicitly serializes dataModel.getWrappedData. See Javadoc of JSF Specification for more.

Version:
$Revision: 1187700 $ $Date: 2011-10-22 07:19:37 -0500 (Sat, 22 Oct 2011) $
Author:
Thomas Spiegl (latest modification by $Author: bommel $)

Constructor Summary
DataModel()
           
 
Method Summary
 void addDataModelListener(DataModelListener listener)
           
 DataModelListener[] getDataModelListeners()
           
abstract  int getRowCount()
           Return the number of rows of data available.
abstract  E getRowData()
          Return the object associated with the current row index.
abstract  int getRowIndex()
          Get the current row index.
abstract  Object getWrappedData()
          Get the entire collection of data associated with this component.
abstract  boolean isRowAvailable()
          Returns true if a call to getRowData will return a valid object.
 Iterator<E> iterator()
          
 void removeDataModelListener(DataModelListener listener)
           
abstract  void setRowIndex(int rowIndex)
          Set the current row index.
abstract  void setWrappedData(Object data)
          Set the entire list of data associated with this component.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DataModel

public DataModel()
Method Detail

addDataModelListener

public void addDataModelListener(DataModelListener listener)

getDataModelListeners

public DataModelListener[] getDataModelListeners()

getRowCount

public abstract int getRowCount()

Return the number of rows of data available.

If the number of rows of data available is not known then -1 is returned. This may happen for DataModels that wrap sources of data such as java.sql.ResultSet that provide an iterator to access the "next item" rather than a fixed-size collection of data.

Returns:
the number of rows available.

getRowData

public abstract E getRowData()
Return the object associated with the current row index.

Method isRowAvailable may be called before attempting to access this method, to ensure that the data is available.

Returns:
The object associated with the current row index.
Throws:
RuntimeException - subclass of some kind if the current row index is not within the range of the current wrappedData property.

getRowIndex

public abstract int getRowIndex()
Get the current row index.

Returns:
The current row index.

getWrappedData

public abstract Object getWrappedData()
Get the entire collection of data associated with this component. Note that the actual type of the returned object depends upon the concrete subclass of DataModel; the object will represent an "ordered sequence of components", but may be implemented as an array, java.util.List, java.sql.ResultSet or other similar types.

Returns:
the wrapped object.

isRowAvailable

public abstract boolean isRowAvailable()
Returns true if a call to getRowData will return a valid object.

Returns:
true if a call to getRowData will return a valid object. false otherwise.

iterator

public Iterator<E> iterator()

Specified by:
iterator in interface Iterable<E>
Since:
2.0

removeDataModelListener

public void removeDataModelListener(DataModelListener listener)

setRowIndex

public abstract void setRowIndex(int rowIndex)
Set the current row index. This affects the behaviour of the getRowData method in particular.

Parameters:
rowIndex - The row index. It may be -1 to indicate "no row", or may be a value between 0 and getRowCount()-1.

setWrappedData

public abstract void setWrappedData(Object data)
Set the entire list of data associated with this component. Note that the actual type of the provided object must match the expectations of the concrete subclass of DataModel. See getWrappedData.

Parameters:
data - The object to be wrapped.


Copyright © 2014 The Apache Software Foundation. All Rights Reserved.