JSF提供javax.faces.model包,数据模型DataModel类位于此包中。
DataModel实现了
一个抽象任意数据绑定技术,可以被用来适应各种数据源使用
JSF
组件,为子组件提供
Row
操作功能(如
UIData,
表格、列表和树都是它的子类)。
例如,
h:dataTable
支持下面几种类型数据的存取
l
数组
l
java.util.List
l
javax.servlet.jsp.jstl.sql.Result
l
java.sql.ResultSet
l
Object
分别对应以下几种
DataMo
del
:
l
ArrayDataModel
l
ListDataModel
l
ResultDataModel
l
ResultSetDataModel
l
ScalarDataModel
我们可以使用
DataModel
来设定
dataTable
的
数据,通过调用
DataModel
的
setWrappedObject()
方法进行设定,调用
getWrappedObject()
则可以取回原始数据类型。
例如:
TableBean.java
package
onlyfun.caterpillar;
import java.util. * ;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
public class TableBean {
private DataModel model;
private int rowIndex = - 1 ;
public DataModel getUsers() {
if (model == null ) {
model = new ListDataModel();
model.setWrappedData(getUserList());
}
return model;
}
private List getUserList() {
List userList = new ArrayList();
userList.add( new UserBean( " caterpillar " , " 123456 " ));
userList.add( new UserBean( " momor " , " 654321 " ));
userList.add( new UserBean( " becky " , " 7890 " ));
return userList;
}
public int getSelectedRowIndex() {
return rowIndex;
}
public String select() {
rowIndex = model.getRowIndex();
return " success " ;
}
}
import java.util. * ;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
public class TableBean {
private DataModel model;
private int rowIndex = - 1 ;
public DataModel getUsers() {
if (model == null ) {
model = new ListDataModel();
model.setWrappedData(getUserList());
}
return model;
}
private List getUserList() {
List userList = new ArrayList();
userList.add( new UserBean( " caterpillar " , " 123456 " ));
userList.add( new UserBean( " momor " , " 654321 " ));
userList.add( new UserBean( " becky " , " 7890 " ));
return userList;
}
public int getSelectedRowIndex() {
return rowIndex;
}
public String select() {
rowIndex = model.getRowIndex();
return " success " ;
}
}
部分参考:JSF学习笔记