使用指南
1:该组件为jsp页面数据分页通用组件,可用于所有struts或jsp+javabean的页面分页功能
2:该组件使用非常简单,只需设定好各项属性,传入数据Vctor或者Sql语句,直接调用多态的
getContentHtml方法即可得到分好页的表格的html代码(string),在页面中<%=string%>即可
,之后的各种翻页操作业已封装在该html代码中,用户不必再操心。
3:该组件设置步骤
a.初始化分页组件实例
eg:OperatePage operatePage = new OperatePage();
b.设定分页表格数据所属的表单名
如不设置该属性,组件将自定义一个名为"form1" 的表单名来存放分页表格。
eg:operatePage.setFormName("formName");
c.设定翻页操作时的跳转页面
该属性必需设置,否则会报错。组件支持翻页时跳转到jsp页面(一般都是原jsp页面)
或者某一Action(struts架构)中。
eg:operatePage.setPageUrl("/jsp/managerAction.do");
eg:operatePage.setPageUrl("/jsp/testPage.jsp");
d.设定跳转类型
组件支持jsp和Action两种跳转类型,两种类型并无大的区别,只是设成Action时
将在翻页操作时传递一个"flag=OperatePage"的参数以便在用户Action中区分是翻页
操作。
operatePage.setForwardType(OperateConst.FOWARD_TYPE_ACTION);或者
operatePage.setForwardType(OperateConst.FOWARD_TYPE_JSP);
e.设定数据Vctor(如果传sql的话在此步骤设置数据库连接的Connection)
operatePage.setCon(con); 或者
operatePage.setDataVector(vecData);
f.设定是否需要单选或者多选列(可不设置,默认为true)
opeatePage.operatePage.setHasSelectItem(true);
g.设定单选或者多选列类型,元素名及对应的该行数据的主键值(如f步骤中设置为false这步省略)
//支持checkBox和radioButton两种
operatePage.setSelectType(OperateConst.SELECT_TYPE_RADIOBUTTON);
//可不设,默认为selectItem1
operatePage.setSelectItemName("selectItemName2");
//序号从1开始,可不设,默认为该行数据的第一列的值
operatePage.setSelectKeyArray( new int []{1,2,3});
h.设定数据标题列(如e步骤中设置为传sql此步省略)
operatePage.setContentTitle(new String[]{"col1","col2","col3","col4"});
g.前面的设置完成后,直接调以下API即可
/**
* @传Vector方式
* @param pm_iPageSize 页大小
* @param pm_iPageIndex 页码
* @param request SevletRequest
* @param response SevletResponse
* @return 数据库分页后的Table HTML(带分页按钮)
* @throws OperateException
*/
public String getContentHtml(int pm_iPageSize,int pm_iPageIndex,HttpServletRequest request, HttpServletResponse response) throws OperateException;
/**
* @传sql方式
* @param pm_iPageSize 页大小
* @param pm_iPageIndex 页码
* @param pm_sPageUrl jsp页面路径
* @param pm_sSql 查询的sql
* @param request SevletRequest
* @param response SevletResponse
* @return 数据库分页后的Table HTML(带分页按钮)
* @throws OperateException
*/
public String getContentHtml(int pm_iPageSize,int pm_iPageIndex,String pm_sSql,HttpServletRequest request, HttpServletResponse response) throws OperateException;
/**
* @传sql方式
* @param pm_iPageSize 页大小
* @param pm_iPageIndex 页码
* @param pm_sPageUrl jsp页面路径
* @param pm_sSql 查询的sql
* @param pm_sDBType 数据库类型,如数据库直接支持数据库端分页,可提高效率
* @param request ServletRequest
* @param response ServletResponse
* @return 数据库分页后的Table HTML(带分页按钮)
* @throws OperateException
*/
public String getContentHtml(int pm_iPageSize,int pm_iPageIndex,String pm_sSql,String pm_sDBType,HttpServletRequest request, HttpServletResponse response) throws OperateException;
4:实例
上述可能有点抽象,让我们来看两个完整使用实例:
第一种是直接在jsp页面中分页,即翻页操作时跳回原jsp页面中
我们来看看testPage.jsp的源代码:
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
<jsp:useBean id="operatePage" class="Action.OperatePage"/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title></title>
</head>
<body>
<%
/**********这是获取数据vector的代码***********/
DbSelect a = new DbSelect();
Vector b = a.getManagerContentByMain_Key(1);
/*form2是你的jsp页面中的表单名*/
operatePage.setFormName("form2");
operatePage.setPageUrl("/jsp/testPage.jsp");
operatePage.setForwardType(OperateConst.FOWARD_TYPE_JSP);
operatePage.setDataVector(b);
operatePage.setHasSelectItem(true);
operatePage.setSelectType(OperateConst.SELECT_TYPE_CHECKBOX);
/*selectItemName是单选列的元素名,这样你可以用request.getParamer("selectItemName")来获取选中的值 ,如不设,默认为名字为selectItemName1*/
operatePage.setSelectItemName("selectItemName");
/*1,2,3表示你用request.getParamer("selectItemName")获取选中行的value为该行第一列,第二列,第三列的值的集合,各列的值以;分隔*/
operatePage.setSelectKeyArray( new int []{1,2,3});
operatePage.setContentTitle(new String[]{"col1","col2","col3","col4"});
/****15是初始的页大小,0是初始页码,之后翻页跳转时这两个值会被request中的新值自动更新*/
String c = operatePage.getContentHtml(15,0,request,response);
%>
<%=c %>
</script>
</body>
</html>
这是传Vctor方式,如果我们改成传sql的方式,只需做修改如下:
<%
/**********这是获取数据库连接的代码***********/
DbConnect a = new DbConnect();
Connection con = a.getOracleConnection();
String sql = "select * from safe_control_object";
operatePage.setFormName("form2");
operatePage.setPageUrl("/jsp/testPage.jsp");
operatePage.setForwardType(OperateConst.FOWARD_TYPE_JSP);
operatePage.setCon(con);
operatePage.setHasSelectItem(true);
operatePage.setSelectType(OperateConst.SELECT_TYPE_CHECKBOX);
operatePage.setSelectItemName("selectItemName2");
operatePage.setSelectKeyArray( new int []{1,2,3});
/* OperateConst.DBTYPE_ORACLE是数据库类型,该字段可传可不传,传的好处在于如果该类型数据库支持后端分页,则组件会采用后端分页的方式,效率较前端分页要高*/
String c = operatePage.getContentHtml(15,0,sql,OperateConst.DBTYPE_ORACLE,request,response);
%>
我们再来看看跳转到Action中的情况,这是翻页Action的源码示例
public class ManagerAction extends DispatchAction{
OperatePage operatePage = new OperatePage();
/**********这是获取数据vector的代码***********/
DbSelect a = new DbSelect();
Vector b = a.getManagerContentByMain_Key(1);
public ActionForward pageOperate(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
String c = operatePage.getContentHtml(15,0,request,response);
HttpSession session = request.getSession();
session.setAttribute("testPage",c);
return mapping.findForward("testPage");
}
/**初始化的操作**/
public ActionForward initPageOperate(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
operatePage.setFormName("form2");
operatePage.setPageUrl("/jsp/managerAction.do");
operatePage.setForwardType(OperateConst.FOWARD_TYPE_ACTION);
operatePage.setDataVector(b);
operatePage.setHasSelectItem(true);
operatePage.setSelectType(OperateConst.SELECT_TYPE_RADIOBUTTON);
operatePage.setSelectItemName("selectItemName2");
operatePage.setSelectKeyArray( new int []{1,2,3});
operatePage.setContentTitle(new String[]{"col1","col2","col3","col4"});
String c = operatePage.getContentHtml(15,0,request,response);
/*把获得的分页后的html代码放到session中去*/
HttpSession session = request.getSession();
session.setAttribute("testPage",c);
/*testPage是你在struts-config.xml中配置的jsp页面的跳转forward**/
return mapping.findForward("testPage");
}
}
jps示例页面
- 1
- 2
前往页