日期:2014-05-17  浏览次数:20691 次

在做web开发中【JSP】,大家【分页】一般自己写吗
。。。。还是用第三方提供的解决方案?

ps:我们公司用 pager-taglib 标签,感觉很一般

------解决方案--------------------
探讨
引用:
分页标签?就是把一个大结果集按配置分页显示的那种?
这个怎么通用?写一个纯jsp下可行的吗?有的框架利用框架特性几行代码ok。
通用不是万能代码。


通用的 比如说: 接可以整合到 ssh 中 , 又可以在 纯 jsp + servlet 的环境下 使用

------解决方案--------------------
经常用到的东西就自己写好框架就好了啊!到时候根据需要略作修改即可啊!
------解决方案--------------------
我现在基本用的是数据库分页,之需要3个信息并范围3个信息,如下:
Pindex in number, --分页索引
Psql in varchar2, --产生dataset的sql语句
Psize in number, --页面大小
Pcount out number, --返回分页总数
Prcount out number, --返回记录总数
v_cur out type_cur --返回当前页数据记录
至于查询和排序条件就根据应用的web层框架采用合适方式组装。
自动判断是自动判断是否有下一页或者是否有前一页。
前台标签[首页 上一页 1 2 3 4 5 下一页 末页]这些都只是简单指向自己本页的链接,带个页码参数而已。
------解决方案--------------------
1:不知道你分页时候 会不会涉及到 【 查询条件】 , 不知道 你【其他全部自动判断】

是如何实现的。
2:既然是分页标签了 涉及到就不纯粹是后台的业务, 还有前台的各种样式的展示


只说一点:

处理带条件的情况!
JScript code
* up page */
function upPageC(currentPage) {
    if (currentPage <= 1) {
        alert("it first page!");
        return;
    }
    document.all.pageBeanForm.page.value = currentPage - 1;
    submit_condition_form();
}
/*next page*/
function nextPageC(currentPage, pCount) {
    if (currentPage >= pCount) {
        alert("it is last page!");
        return;
    }
    document.all.pageBeanForm.page.value = currentPage + 1;
    submit_condition_form();
}
/* the last page*/
function lastPageC(pCount) {
    document.all.pageBeanForm.page.value = pCount;
    submit_condition_form();
}
/* the first page*/
function firstPageC() {
    document.all.pageBeanForm.page.value = 1;
    submit_condition_form();
}
/*把pageForm里面的分页参数加载过来*/
function submit_condition_form(srcFm, targetFm) {
    if (srcFm == null) {
        srcFm = document.all.pageBeanForm;
    }
    if (targetFm == null) {
        targetFm = document.all.comditionForm;
    }
    if (srcFm != null) {
        for (var i = 0; i < srcFm.elements.length; i++) {
            var element = srcFm.elements[i];
            if (element.type == "hidden") {
                targetFm.appendChild(element);
            }
        }
    }
    targetFm.submit();
}

------解决方案--------------------
原理是用 隐藏表单域去处理的 !

 像上面的情况 这种写法也是不太理想的
 处理不同的实体时条件各不相同 怎么去封装应该更好的去处理!

for example:
查询操作日志: params 可能就有 操作日期 操作用户 指定模版 IP等 

如果是查询出入库: parms 可能就有 物品种类, 出入库日期 ,操作人

这样一来。。参数封装就成问题了.因为这些条件都得到 相应的sql中去体现 
-----------我是讲带条件的


处理方法也肯定是有的:
在 view 的时候就指定类型 然后到业务层去转!当然可能有别的方法



从上面也看得出来,你付出的代价。



复杂的功能简单处理 简单的功能 复杂的对待













------解决方案--------------------
搞懂原理 自己写个吧 很简单 又能学东西 至于性能 就是缓存方面的问题不必太在意。

------解决方案--------------------
前台后台脱离。
前台只用JS去控制 就OK了。
这种分页应该效果最好。