ResultSetDataModel (Java EE 5)

Java EE API


javax.faces.model Class ResultSetDataModel

java.lang.Object
  extended by javax.faces.model.DataModel
      extended by javax.faces.model.ResultSetDataModel

public class ResultSetDataModel
extends DataModel

Extends: DataModel

ResultSetDataModelDataModel 的便捷实现,它包装了一个 Java 对象 ResultSet。注意,指定的 ResultSet 必须是可滚动的。此外,如果输入组件(它将更新模型值)在值绑定表达式中引用此对象,则指定的 ResultSet 必须是可更新的。

英文文档:

ResultSetDataModel is a convenience implementation of DataModel that wraps a ResultSet of Java objects. Note that the specified ResultSet MUST be scrollable. In addition, if input components (that will be updating model values) reference this object in value binding expressions, the specified ResultSet MUST be updatable.


Constructor Summary
 
Method Summary
 int
 Object
 int
 Object
 boolean
 void
 void
 
Methods inherited from class javax.faces.model.DataModel
 
Methods inherited from class java.lang.Object
 

Constructor Detail

public ResultSetDataModel()

构造不带指定包装数据的新 ResultSetDataModel

英文文档:

ResultSetDataModel

public ResultSetDataModel()

Construct a new ResultSetDataModel with no specified wrapped data.


public ResultSetDataModel(java.sql.ResultSet resultSet)

构造包装指定 ResultSet 的新 ResultSetDataModel

resultSet 要包装的 ResultSet(如果有)
英文文档:

ResultSetDataModel

public ResultSetDataModel(ResultSet resultSet)

Construct a new ResultSetDataModel wrapping the specified ResultSet.

Parameters:
resultSet - ResultSet to be wrapped (if any)

Method Detail

public boolean isRowAvailable()

如果有可用的 wrappedData,并且对底层 ResultSet 调用 absolute(),同时传递 rowIndex 加 1 处的当前值(考虑到 ResultSet 使用以 1 开始的索引)所得结果为 true,则返回 true。否则返回 false

ThrowsFacesException: 如果检测行可用性时发生错误
英文文档:

isRowAvailable

public boolean isRowAvailable()

Return true if there is wrappedData available, and the result of calling absolute() on the underlying ResultSet, passing the current value of rowIndex plus one (to account for the fact that ResultSet uses one-relative indexing), returns true. Otherwise, return false.

Specified by:
isRowAvailable in class DataModel
Throws:
FacesException - if an error occurs getting the row availability

public int getRowCount()

返回 -1,ResultSet 没有提供无需滚动整个 ResultSet 即可确定可用行数的标准方式,因此,如果行数很大,此操作可能开销很大。

ThrowsFacesException: 如果获取行数时发生错误
英文文档:

getRowCount

public int getRowCount()

Return -1, since ResultSet does not provide a standard way to determine the number of available rows without scrolling through the entire ResultSet, and this can be very expensive if the number of rows is large.

Specified by:
getRowCount in class DataModel
Throws:
FacesException - if an error occurs getting the row count

public Object getRowData()

如果行数据可用,则返回一个 Map,它表示 rowIndex 所指定行的列值,以相应的列名称作为键。如果没有任何包装数据可用,则返回 null

如果返回非 null Map,则其行为必须符合 AbstractMap 的 JavaDoc 中描述的有关可变 Map 的协定,但存在以下例外和特殊行为:

  • Map 及其返回的任何支持对象必须以不区分大小写的方式执行所有列名称比较。必须使用不区分大小写的 Comparator(如 String.CASE_INSENSITIVE_ORDER)实现该目的。
  • 以下方法必须抛出 UnsupportedOperationExceptionclear()remove()
  • entrySet() 方法必须返回具有以下行为的 Set
    • 对于任何试图向 Set 添加条目或从其中删除条目的操作抛出 UnsupportedOperationException,不管该操作是直接还是间接地通过 Set 所返回的 Iterator 进行。
    • 对此 set 中条目的 value 的更新必须写入底层 ResultSet 中相应的列值。
  • keySet() 方法必须返回一个 Set,它能对任何试图添加或删除键的操作抛出 UnsupportedOperationException,不管该操作是直接还是间接地通过 Set 所返回的 Iterator 进行。
  • 如果指定了 containsKey() 返回 false 的键值,则 put() 方法必须抛出 IllegalArgumentException。但是,如果指定了 Map 中已经存在的键,则指定的值必须写入底层 ResultSet 中相应的列值。
  • values() 方法必须返回一个 Collection,它能对任何添加或删除值的操作抛出 UnsupportedOperationException,不管该操作是直接还是间接地通过 Collection 所返回的 Iterator 进行。
ThrowsFacesException: 如果获取行数据时发生错误
ThrowsIllegalArgumentException: 如果当前指定行索引处的行数据目前可用
英文文档:

getRowData

public Object getRowData()

If row data is available, return a Map representing the values of the columns for the row specified by rowIndex, keyed by the corresponding column names. If no wrapped data is available, return null.

If a non-null Map is returned, its behavior must correspond to the contract for a mutable Map as described in the JavaDocs for AbstractMap, with the following exceptions and specialized behavior:

  • The Map, and any supporting objects it returns, must perform all column name comparisons in a case-insensitive manner. This case-insensitivity must be implemented using a case-insensitive Comparator, such as String.CASE_INSENSITIVE_ORDER.
  • The following methods must throw UnsupportedOperationException: clear(), remove().
  • The entrySet() method must return a Set that has the following behavior:
    • Throw UnsupportedOperationException for any attempt to add or remove entries from the Set, either directly or indirectly through an Iterator returned by the Set.
    • Updates to the value of an entry in this set must write through to the corresponding column value in the underlying ResultSet.
  • The keySet() method must return a Set that throws UnsupportedOperationException on any attempt to add or remove keys, either directly or through an Iterator returned by the Set.
  • The put() method must throw IllegalArgumentException if a key value for which containsKey() returns false is specified. However, if a key already present in the Map is specified, the specified value must write through to the corresponding column value in the underlying ResultSet.
  • The values() method must return a Collection that throws UnsupportedOperationException on any attempt to add or remove values, either directly or through an Iterator returned by the Collection.

Specified by:
getRowData in class DataModel
Throws:
FacesException - if an error occurs getting the row data
IllegalArgumentException - if now row data is available at the currently specified row index

public int getRowIndex()
ThrowsFacesException: NullPointerException 如果获取行索引时发生错误
英文文档:

getRowIndex

public int getRowIndex()
Description copied from class: DataModel

Return the zero-relative index of the currently selected row. If we are not currently positioned on a row, or no wrappedData is available, return -1.

Specified by:
getRowIndex in class DataModel
Throws:
FacesException - if an error occurs getting the row index

public void setRowIndex(int rowIndex)
ThrowsFacesException: NullPointerException 如果设置行索引时发生错误
ThrowsIllegalArgumentException: NullPointerException 如果 rowIndex 小于 -1
英文文档:

setRowIndex

public void setRowIndex(int rowIndex)
Description copied from class: DataModel

Set the zero-relative index of the currently selected row, or -1 to indicate that we are not positioned on a row. It is possible to set the row index at a value for which the underlying data collection does not contain any row data. Therefore, callers may use the isRowAvailable() method to detect whether row data will be available for use by the getRowData() method.

If there is no wrappedData available when this method is called, the specified rowIndex is stored (and may be retrieved by a subsequent call to getRowData()), but no event is sent. Otherwise, if the currently selected row index is changed by this call, a DataModelEvent will be sent to the rowSelected() method of all registered DataModelListeners.

Specified by:
setRowIndex in class DataModel
Parameters:
rowIndex - The new zero-relative index (must be non-negative)
Throws:
FacesException - if an error occurs setting the row index
IllegalArgumentException - if rowIndex is less than -1

public Object getWrappedData()
英文文档:

getWrappedData

public Object getWrappedData()
Description copied from class: DataModel

Return the object representing the data wrapped by this DataModel, if any.

Specified by:
getWrappedData in class DataModel

public void setWrappedData(Object data)
ThrowsClassCastException: NullPointerException 如果 data 的类型不适合此 DataModel 实现
英文文档:

setWrappedData

public void setWrappedData(Object data)
Description copied from class: DataModel

Set the object representing the data collection wrapped by this DataModel. If the specified data is null, detach this DataModel from any previously wrapped data collection instead.

If data is non-null, the currently selected row index must be set to zero, and a DataModelEvent must be sent to the rowSelected() method of all registered DataModelListeners indicating that this row is now selected.

Specified by:
setWrappedData in class DataModel
Parameters:
data - Data collection to be wrapped, or null to detach from any previous data collection
Throws:
ClassCastException - if data is not of the appropriate type for this DataModel implementation


Submit a bug or feature

Copyright 2007 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.

一看就知道只有菜鸟才干这么无知的事啦。

PS : 未经我党受权你也可自由散发此文档。 如有任何错误请自行修正;若因此而造成任何损失请直接找人民主席,请勿与本人联系。谢谢!