现在位置:首页->学习专题->JSF专题
TableModel类别
作者: 日期: 2007-4-5 14:21:57 访问次数:出处:
 显示选项:自动滚屏[左键停止]
 

在 简单的表格 中曾经提过,<h:dataTable>可以列举以下几种型态的资料:

  • 阵列
  • java.util.List的实例
  • java.sql.ResultSet的实例
  • javax.servlet.jsp.jstl.sql.Result的实例
  • javax.faces.model.DataModel的实例

  对于前四种型态,JSF实际上是以javax.faces.model.DataModel加以包装,DataModel是个抽象类别,其子类别都是位于 javax.faces.model这个package下:

  • ArrayDataModel
  • ListDataModel
  • ResultDataModel
  • ResultSetDataModel
  • ScalarDataModel

  如果您想要对表格资料有更多的控制,您可以直接使用DataModel来设定表格资料,呼叫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";

    }

 }

  在这个Bean中,我们直接设定DataModel?,将userList设定给它,如您所看到的,我们还可以取得DataModel?的各个变项,在这个例子中,select()将作为点选表格之后的事件处理方法,我们可以藉由DataModel?的getRowIndex ()来取得所点选的是哪一row的资料,例如:

index.jsp

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

 <html>

 <link href="styles.css" rel="stylesheet" type="text/css"/>

⊕相关文章
  • ·表头、表尾
  • ·简单的表格
  • ·其它标签
  • ·选择类标签
  • ·命令类标签
  • ·输入类标签