做这个spageview控件只是为了使一些初学者用最简单的方式实现较复杂的分页。这个分页控件遵循MVC模式PageView是model,taglib是view,action为controller但是也可以不写。ActionController是一个工具类,在分页控件中如果使用工具类就不需要使用PageView的对象了。
下面是一个全部数据的分页例子:
package action;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import my.page.model.PageView;
import org.apache.struts2.ServletActionContext;
import org.hibernate.Query;
import pojo.Test;
import pojo.TestDAO;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class Add extends ActionSupport {
@Override
public String execute() throws Exception {
//request对象是必须使用的,因为数据集是存在作用域中的,存在session中
HttpServletRequest request = (HttpServletRequest)ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
if(ActionController.getModel(request, "list")==null){
Query q = new TestDAO().getSession().createQuery("from Test ");
//要绑定的数据集
List<Test> l = q.list();
try{
//初始化数据源(将数据集绑定如模型)
my.page.web.ActionController.initModelByAllDataSouce(request, "list", l,1,2);
//绑定显示列
my.page.web.ActionController.bindFieldQueue(request, "fieldIndex", "student.sid,student.sname,id");
}
catch(Exception em){
em.printStackTrace();
}
}
return "success";
}
}
页面taglib控件代码
<%@taglib prefix="m" uri="/jsp/spageview-tags" %>
<m:pagetable dataSouce="${list}" fieldIndex="${fieldIndex}" headContent="学生编号,学生姓名,test_id" sessionName="list" actionUrl="add" tableClass="view" titleClass="title" buttonClass="button" filedClass="field" isAdd="true" isSelect="true" isEdit="true" isDelete="true">
</m:pagetable>
<m:pageControl dataSouce="${list}" actionUrl="add" divClass=".control" isCurrentPage="false" isPageCounts="true" isPageGoto="true" isPageIndex="true" isTotalRows="true"></m:pageControl>
pagetable是现实数据的table,pageControl 是分页的按钮。详细介绍和其它使用方法以后有时间在介绍。