`
Disney2002
  • 浏览: 54494 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

List 分页封装及结合Struts2使用

阅读更多
1. 核心类:
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.nazca.consult.consultee.web.util.Pager;
import com.opensymphony.xwork2.ActionSupport;

/**
 * 分页使用到的Action,如果其他有分页需要的action继承此Action即可使用分页功能
 * 
 * @author XiaoQuan
 */
public class AbstractListActioin extends ActionSupport {

    private static final long serialVersionUID = -4680224737445304053L;
    private static Log log = LogFactory.getLog(AbstractListActioin.class);

    public Pager makePager(String pageNumber, int total, int pageSize,
            int ListStep) {
        Pager pager = new Pager();
        // 设置总数
        pager.setTotal(total);
        // 设置每页显示多少数据
        pager.setPageSize(pageSize);

        int pageNum = 1;

        if (pageNumber != null) {
            pageNum = Integer.parseInt(pageNumber);
        }

        // 设置当前页
        pager.setCurrentPage(pageNum);

        // 最多显示分页页数
        pager.setListStep(ListStep);

        // 求总页数,ceil(num)取整不小于num
        pager.setPagesCount((int) Math.ceil((double) pager.getTotal()
            / pager.getPageSize()));
        if (pager.getPagesCount() < pageNum) {
            pager.setCurrentPage(pager.getPagesCount());// 如果分页变量大总页数,则将分页变量设计为总页数
        }
        if (pageNum < 1) {
            pager.setCurrentPage(1);
        }

        // 从第几页开始显示分页信息
        pager.setListBegin(pager.getCurrentPage() - (int) Math.ceil((double) pager.getListStep() / 2));
        if (pager.getListBegin() < 1) {
            pager.setListBegin(1);
        }

        // 分页信息显示到第几页
        pager.setListEnd(pager.getCurrentPage() + pager.getListStep() / 2);

        if (pager.getListEnd() > pager.getPagesCount()) {
            pager.setListEnd(pager.getPagesCount());
        }

        List<String> list = new ArrayList<String>();
        
        for (int i = pager.getListBegin(); i < pager.getListEnd(); i++) {
            list.add(i + "");
        }

        pager.setPageList(list);
        return pager;
    }
}


Pager类:
import java.util.List;

/**
 *
 * @author XiaoQuan
 */
@SuppressWarnings("unchecked")
public class Pager {

    private int beginPage;
    private int endPage;
    private int currentPage;
    private int pageSize;
    private int total;
    private int listStep;
    private int listBegin;
    private int listEnd;
    private int pagesCount;
    private List pageList;

    public int getBeginPage() {
        return beginPage;
    }

    public void setBeginPage(int beginPage) {
        this.beginPage = beginPage;
    }

    public int getEndPage() {
        return endPage;
    }

    public void setEndPage(int endPage) {
        this.endPage = endPage;
    }

    public int getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }

    public int getListStep() {
        return listStep;
    }

    public void setListStep(int listStep) {
        this.listStep = listStep;
    }

    public int getListBegin() {
        return listBegin;
    }

    public void setListBegin(int listBegin) {
        this.listBegin = listBegin;
    }

    public int getListEnd() {
        return listEnd;
    }

    public void setListEnd(int listEnd) {
        this.listEnd = listEnd;
    }

    public int getPagesCount() {
        return pagesCount;
    }

    public void setPagesCount(int pagesCount) {
        this.pagesCount = pagesCount;
    }

    public List getPageList() {
        return pageList;
    }

    public void setPageList(List pageList) {
        this.pageList = pageList;
    }
}



2. 需要使用分页的Action类继承该类
public class GetMyQListAction extends AbstractListActioin {

中间内容略....
//获得page对象,保存到session中
Pager pageP = makePager(getPage(), total,
                Constants.MY_QUESTION_PAGE_N, Constants.LIST_STEP);
            ctx.put("pager", pageP);
}


3.页面添加如下JSP内容即可
<div id="pageNavigator">
	<span> <s:if test="#request.pager.currentPage > 1">
			<s:url id="prePage" action="consult" includeParams="none">
				<s:param name="pages" value="#request.pager.currentPage-1" />
			</s:url>
			<s:a href="#"
				onclick="javascript:GetFavoriteQList(0,%{#request.pager.currentPage-1})">上一页</s:a>
		</s:if> <s:else>
			<span>上一页</span>
		</s:else> </span>
	<span> <s:iterator value="#request.pager.pageList" id="pageList"
			status="pageNum">
			<s:if test="#request.pager.currentPage == #pageList">
				<b>[<s:property value="pageList" />]</b>
			</s:if>
			<s:else>
				<s:a href="#"
					onclick="javascript:GetFavoriteQList(0,%{pageList})">[<s:property
						value="pageList" />]</s:a>
			</s:else>
		</s:iterator> </span>
	<span> <s:if
			test="#request.pager.currentPage != #request.pager.pagesCount">
			<s:url id="nextPage" action="some" includeParams="none">
				<s:param name="pages" value="#request.pager.currentPage+1" />
			</s:url>
			<s:a href="#"
				onclick="javascript:GetFavoriteQList(0,%{#request.pager.currentPage+1})">下一页</s:a>
		</s:if> <s:else>
			<span>下一页</span>
		</s:else> </span>
</div>

分享到:
评论
12 楼 baoq 2009-02-24  
真麻烦 还不如
http://www.iteye.com/topic/317875
11 楼 bruce_andy 2008-07-08  
看看rubbin先生的,业务类写的很好了
10 楼 kjj 2008-07-08  
嗯 ,楼上的见解和我一样,我正在做这个标签,原则上 page类只是一个控制类,指示index和size,action里不宜放太多的业务逻辑啊
9 楼 ray_linn 2008-07-04  
private List pageList;   --- 这个是虾米东东?
8 楼 gaoyuntao2005 2008-07-02  
好, 写的不错。
7 楼 lanhongbo 2008-07-02  
顶 直接打包上传 哈哈
6 楼 zouzou 2008-07-01  
提供源码吧
5 楼 lenj 2008-07-01  
直接打包上传下吧
4 楼 rennuoting 2008-06-30  
能不能提供demo的源代码呢?这样看着很累,自己想实验一下
3 楼 Disney2002 2008-06-29  
function GetList(q, p){
    var url = null;
    switch (q) {
        case 1:
            url = "A.action?page=" + p;
            break;
        default:
            url = "B.action?page=" + p;
    }
    window.scrollTo(0, 0);
    new Ajax.Request(url, {
        method: 'post',
        onSuccess: function(transport){
            var favoriteQList = transport.responseText;
            $("favoriteQ").innerHTML = favoriteQList;
        },
        onCreate: function(){
            $("favoriteQ").innerHTML = $("loadingDiv").innerHTML;
        },
        onFailure: function(){
            $('loadingText').innerHTML = "出错啦";
            $("favoriteQ").innerHTML = $("loadingDiv").innerHTML;
        }
    });
}


q是列表的类型,p 是返回要获取的页数
2 楼 wm920 2008-06-24  
能给我发这个例子么··谢谢··275243125@163.com
1 楼 javaEye_good 2008-06-24  
能不能详细点阿?兄弟。javascript在哪?数据怎么取

相关推荐

    kernel-devel-4.18.0-553.45.1.el8-10.x86-64.rpm

    Rocky Linux 8.10内核包

    Simulink中三阶单环多位量化Σ-Δ调制器的设计与实现-音频带ADC的应用(复现论文或解答问题,含详细可运行代码及解释)

    内容概要:本文档详细介绍了如何在Simulink中设计一个满足特定规格的音频带ADC(模数转换器)。首先选择了三阶单环多位量化Σ-Δ调制器作为设计方案,因为这种结构能在音频带宽内提供高噪声整形效果,并且多位量化可以降低量化噪声。接着,文档展示了具体的Simulink建模步骤,包括创建模型、添加各个组件如积分器、量化器、DAC反馈以及连接它们。此外,还进行了参数设计与计算,特别是过采样率和信噪比的估算,并引入了动态元件匹配技术来减少DAC的非线性误差。性能验证部分则通过理想和非理想的仿真实验评估了系统的稳定性和各项指标,最终证明所设计的ADC能够达到预期的技术标准。 适用人群:电子工程专业学生、从事数据转换器研究或开发的技术人员。 使用场景及目标:适用于希望深入了解Σ-Δ调制器的工作原理及其在音频带ADC应用中的具体实现方法的人群。目标是掌握如何利用MATLAB/Simulink工具进行复杂电路的设计与仿真。 其他说明:文中提供了详细的Matlab代码片段用于指导读者完成整个设计流程,同时附带了一些辅助函数帮助分析仿真结果。

    计算机课后习题.docx### 【计算机科学】研究生入学考试计算机组成原理专项题库设计:考研复习资源集成与优化

    内容概要:该题库专为研究生入学考试计算机组成原理科目设计,涵盖名校考研真题、经典教材课后习题、章节题库和模拟试题四大核心模块。名校考研真题精选多所知名高校的计算机组成原理科目及计算机联考真题,并提供详尽解析,帮助考生把握考研命题趋势与难度。经典教材课后习题包括白中英《计算机组成原理》(第5版)和唐朔飞《计算机组成原理》(第2版)的全部课后习题解答,这两部教材被众多名校列为考研指定参考书目。章节题库精选代表性考题,注重基础知识与重难点内容,帮助考生全面掌握考试大纲要求的知识点。模拟试题依据历年考研真题命题规律和热门考点,精心编制两套全真模拟试题,并附标准答案,帮助考生检验学习成果,评估应试能力。 适用人群:计划参加研究生入学考试并报考计算机组成原理科目的考生,尤其是需要系统复习和强化训练的学生。 使用场景及目标:①通过研读名校考研真题,考生可以准确把握考研命题趋势与难度,有效评估复习成效;②通过经典教材课后习题的练习,考生可以巩固基础知识,掌握解题技巧;③通过章节题库的系统练习,考生可以全面掌握考试大纲要求的各个知识点,为备考打下坚实基础;④通过模拟试题的测试,考生可以检验学习成果,评估应试能力,为正式考试做好充分准备。 其他说明:该题库不仅提供详细的题目解析,还涵盖了计算机组成原理的各个方面,包括计算机系统概述、数据表示与运算、存储器分层、指令系统、中央处理器、总线系统和输入输出系统等。考生在使用过程中应结合理论学习与实践操作,注重理解与应用,以提高应试能力和专业知识水平。

    __UNI__DB9970A__20250328141034.apk.1

    __UNI__DB9970A__20250328141034.apk.1

    minio-rsc-Rust资源

    rust for minio

    4-4-台区智能融合终端功能模块型式规范(试行).pdf

    国网台区终端最新规范

    《基于YOLOv8的化工管道焊缝缺陷检测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    python源码-1个机器学习相关资源

    一个简单的机器学习代码示例,使用的是经典的鸢尾花(Iris)数据集,通过 Scikit-learn 库实现了一个简单的分类模型。这个代码可以帮助你入门机器学习中的分类任务。

    pyqt离线包,pyqt-tools离线包

    pyqt离线包,pyqt-tools离线包

    《基于YOLOv8的船舶机舱灭火系统状态监测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    SQL常用日期和时间函数整理及使用示例

    SQL常用日期和时间函数整理及在sqlserver测试示例 主要包括 1.查询当前日期GETDATE 2.日期时间加减函数DATEADD 3 返回两个日期中指定的日期部分之间的差值DATEDIFF 4.日期格式转换CONVERT(VARCHAR(10),GETDATE(),120) 5.返回指定日期的年份数值 6.返回指定日期的月份数值 7.返回指定日期的天数数值

    GSDML-V2.3-Turck-BL20-E-GW-EN-20160524-010300.xml

    GSDML-V2.3-Turck-BL20_E_GW_EN-20160524-010300.xml

    T_CPCIF 0225-2022 多聚甲醛.docx

    T_CPCIF 0225-2022 多聚甲醛.docx

    《基于YOLOv8的智能仓储货物堆码倾斜预警系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    《基于YOLOv8的智能仓储货物堆码倾斜预警系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计

    蚕豆脱壳机设计.zip

    蚕豆脱壳机设计.zip

    附件2-2:台区智能融合终端入网专业检测单位授权委托书.docx

    台区终端电科院送检文档

    Y6一39一No23.6D离心通风机 CAD().zip

    Y6一39一No23.6D离心通风机 CAD().zip

    django自建博客app

    django自建博客app

    附件3-4:台区智能融合终端全性能试验增值税发票开具确认单.docx

    台区终端电科院送检文档

    非开挖水平定向钻机动力头装置设计.zip

    非开挖水平定向钻机动力头装置设计.zip

Global site tag (gtag.js) - Google Analytics