锁定老帖子 主题:show下我的分页类
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-18
至少用StringBuffer来拼吧
|
|
返回顶楼 | |
发表时间:2008-11-18
呵呵,多谢提出宝贵建议,
还有楼上说的JS组件,偶没用过,能推荐几个不 |
|
返回顶楼 | |
发表时间:2008-11-18
恩。。。。
LS几个说的js组建还是不错的 |
|
返回顶楼 | |
发表时间:2008-11-18
xuming9 写道 icefire 写道 输出都写死了,无法定制输出内容,无法定义样式,无法国际化,GetParamsFromCurrentUrl()……总之,很差。
<div id="product_page"> ${pr.strlink } </div> 样式可以定义, 国际化也可以使用哦,只是目前我这个项目没涉及到国际化,没改 这只是我个人使用的,有很多缺点,大家讨论下嘛, 多谢楼上的意见,希望大家多多提出意见,多多完善 其实这都源于一个原因,你把分页展现写死在了类里。假如用户要改成像JAVAEYE一样的分页效果呢? 更假如有的界面要一种效果,另外的页面又要另一种效果呢? 虽然样式是可以定义,但很难细化。。。 真正的样式不只是字体,大小,颜色……还包括你的输出文字。 比如 第2/3页,改成 当前第 2 页,共 3 页, 比如用户要跳转是下拉选的呢? 留白用CSS来定义,不要用  多看看别人的吧,比如displaytag怎么处理的。虽然我觉得也不怎么好!主要自由度还不够大。。 分页的工具有很多,自己多搜搜吧! 以前我和你一样,不过我是写死在taglib中。 str1 = str1 + "&" + paraName + "=" + paraValue; 不要用字符串加和,用stringbuilder,其他地方也是 其实可以用replace把page参数去掉 国际化需求是少的,不过改视图中名称的情况是多的,改一个资源文件多好,并且保证一致,不会出现某个页面少打一个字。。。低耦合总是好的。其实国际化也不会增加多少工作。不过选择权在自己手上,自己怎么选,那得看自己了。 |
|
返回顶楼 | |
发表时间:2008-11-18
显示和分页逻辑偶合在一起了。和跟html有关的都想办法去掉
|
|
返回顶楼 | |
发表时间:2008-11-18
xuming9 写道 package com.xm.utils; import java.util.Enumeration; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.kangsheng.cus.common.dbconn.DaoFactory; // Referenced classes of package com.sihitech.tools: // DaoFactory public class PageRoll { private String currentUrl; // private PageContext page; private DaoFactory pv; private HttpServletRequest request; private HttpServletResponse response; private String strParams; private String strlink; public PageRoll(HttpServletRequest request, HttpServletResponse response, DaoFactory pv) { currentUrl = ""; strParams = ""; this.request = request; this.response = response; this.pv = pv; currentUrl = request.getRequestURL().toString(); strParams = GetParamsFromCurrentUrl(); } private String GetParamsFromCurrentUrl() { String str1 = ""; String paraValue = ""; for (Enumeration enu = request.getParameterNames(); enu .hasMoreElements();) { String paraName = (String) enu.nextElement(); paraValue = request.getParameter(paraName); if (!paraName.equals("page")) str1 = str1 + "&" + paraName + "=" + paraValue; } return str1; } public void Show(boolean allRecord, boolean pageInfo, boolean pageNav, boolean jumpPage) { // PrintWriter out = response.getWriter(); // out.print("<table border=0> <tr><td>"); String link = ""; if (allRecord) link = link + ShowTotalRecord(); if (pageInfo) link = link + ShowPageInfo(); if (pageNav) link = link + ShowPageNav(); if (jumpPage) link = link + ShowJumpPage(); this.strlink = link; // out.print("</td></tr></table>"); } private String ShowJumpPage() { // PrintWriter out = response.getWriter(); String link = ""; link = link + "转到第<input type='text' name='page' size='1'><span>页</span><input type=button value='GO' onclick='goToPage()'>"; link = link + "<script language='javascript'>"; link = link + "function goToPage(){"; link = link + "value=document.all.page.value;"; link = link + "if(value.indexOf(\".\")==-1 && value.indexOf(\"-\")==-1 && value!==\"\" && !isNaN(value) && value>0 && value<" + (pv.GetTotalPage() + 1) + "){"; link = link + "location.assign('" + currentUrl + "?page='+value+'" + strParams + "')"; link = link + "}"; link = link + "}"; link = link + "</script>"; return link; } private String ShowPageInfo() { // PrintWriter out = response.getWriter(); String link = "第" + pv.GetCurrentPage() + "/" + pv.GetTotalPage() + "页 "; return link; } private String ShowPageNav() { // PrintWriter out = response.getWriter(); String link = ""; if (pv.GetTotalPage() > 1) link = "<a href='" + currentUrl + "?page=1" + strParams + "'><span>首页</span></a> "; else link = "<span>首页 </span>"; // if (pv.GetHasPrev()) link = link + "<a href='" + currentUrl + "?page=" + pv.GetPrevPageNumber() + strParams + "'><span>上页</span></a> "; else link = link + "<span>上页 </span>"; // if (pv.GetHasNext()) link = link + "<a href='" + currentUrl + "?page=" + pv.GetNextPageNumber() + strParams + "'><span>下页</span></a> "; else link = link + "<span>下页 </span>"; // if (pv.GetTotalPage() > 1) { link = link + "<a href='" + currentUrl + "?page=" + pv.GetTotalPage() + strParams + "'><span>尾页</span></a> "; return link; } else { link = link + "<span>尾页 </span>"; return link; } } private String ShowTotalRecord() { // PrintWriter out = response.getWriter(); String link = "<span>共" + pv.GetTotalRecord() + "条记录 </span>"; return link; } public String getStrlink() { return strlink; } public void setStrlink(String strlink) { this.strlink = strlink; } } 使用时,在action中建立该类的对象pr,并执行public void Show(boolean allRecord, boolean pageInfo, boolean pageNav,boolean jumpPage),将该对象放入ModelAndView,在页面使用${pr.strlink }就可以实现分页,如图 本人从事JAVA才1年,希望达到抛砖引玉的效果,大家把自己的工具拿出来show show,共同研究下,学习下 也建议版主弄一个工具包专题 好像写的是太死了,不应该把HTML也写到里面去,这个是基本 |
|
返回顶楼 | |
发表时间:2008-11-18
把request和response都加进类里面,耦合太厉害了,不太灵活。
|
|
返回顶楼 | |
发表时间:2008-11-18
用string来拼!!不好吧!
支持show代码的胆量,我怕一show就成隐藏或者新手 |
|
返回顶楼 | |
发表时间:2008-11-18
把JavaScript和显示放在里面总感觉不是很好。
|
|
返回顶楼 | |
发表时间:2008-11-18
再次感谢楼上的兄弟们提出宝贵意见,
最后大家也show些自己的类把,哈哈 |
|
返回顶楼 | |