- 浏览: 1441419 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (409)
- Java (48)
- Spring (29)
- struts2 (17)
- hibernate (4)
- 设计模式 (24)
- jbpm (1)
- JavaScript (5)
- 统计报表 (7)
- ExtJS_3.0 (35)
- struts1 (1)
- 分析设计 (3)
- Flex3 (24)
- UML (2)
- 数据库 (18)
- PowerDesigner (2)
- 应用服务器 (3)
- WebService (5)
- ActiveMQ_5.3.2 (6)
- Java通信技术 (11)
- GWT (6)
- OSGi (15)
- android (11)
- liferay6.0.6 (13)
- jquery (13)
- Linux (3)
- java.util.concurrent (16)
- guava (9)
- 开发模式 (1)
- 大数据 (2)
- 互联网金融 (4)
- treegrid-3.0 (7)
- 分布式 (8)
- GO语言 (4)
- maven (1)
- 缓存技术 (6)
- 其他 (2)
- 前端页面 (1)
- heasy (1)
- spring cloud(F版) (21)
- springboot (12)
- springmvc (5)
- mybatis (3)
- dubbo (1)
- 物联网 (0)
最新评论
-
raymond.chen:
谢谢您的分享
使用Ngrok解决通过外网访问内网web应用 -
wangyudong:
速度有点慢,不过在也找到了一个开源的holer,配置一个key ...
使用Ngrok解决通过外网访问内网web应用 -
a1006458222:
...
Axis2的部署和应用 -
偷师来了:
不好意思 这样的博客我觉得就灭有必要分享出来了 命令大家都会看 ...
Consul框架介绍 -
lliiqiang:
怎么直接删除文件夹啊?固定的几个文件可以删除,不固定的呢?需要 ...
Flex AIR —— 文件读写
一、标签类源代码
public class PageNavigationBarTag extends BaseBodyTagSupport { private String pageBean; private String actionName; public String getPageBean() { return pageBean; } public void setPageBean(String pageBean) { this.pageBean = pageBean; } public String getActionName() { return actionName; } public void setActionName(String actionName) { this.actionName = actionName; } public int doEndTag() throws JspException { if(CommonUtil.isEmpty(pageBean)){ throw new JspException("pageBean must not be null"); } Page page = null; Map params = null; try{ page = (Page)getValueStack().findValue(pageBean); params = RequestUtil.getParameterMap(getRequest(), ""); }catch(Exception e){ throw new JspException(e); } Map dataModel = new HashMap(); dataModel.put("page", page); dataModel.put("params", params); dataModel.put("actionName", CommonUtil.trim(actionName)); try{ String ret = render(pageContext.getServletContext(), dataModel, "taglib/PageNavigationBar.ftl"); pageContext.getOut().println(ret); }catch(Exception ex){ throw new JspException(ex); } return EVAL_PAGE; } }
二、Page类源代码
public class Page { private int pageIndex = 0; //当前页号 private int pageSize = 15; //每页记录数 private int pageCount = 0; //总页数 private int rowCount = 0; //总记录数 private List result = null; //页数据 public Page(){ } public Page(List result, int rowCount, int pageIndex, int pageSize){ this.result = result; this.rowCount = rowCount; this.pageIndex = pageIndex; this.pageSize = pageSize; updatePageCount(); } public int getPageIndex() { return pageIndex; } public int getPageSize() { return pageSize; } public int getPageCount() { return pageCount; } public int getRowCount() { return rowCount; } private void updatePageCount() { if(rowCount <= 0){ rowCount = 0; }else{ int count = rowCount / pageSize; if(rowCount % pageSize > 0){ count++; } pageCount = count; } } public List getResult() { return result; } }
三、公共方法源代码
public static Map getParameterMap(HttpServletRequest request, String prefix){ Map p = new HashMap(); Map paramsMap = request.getParameterMap(); for(Iterator it=paramsMap.keySet().iterator();it.hasNext();){ String key = (String)it.next(); String value = request.getParameter(key); if(CommonUtil.isEmpty(value)) continue; if(CommonUtil.isEmpty(prefix)){ p.put(key, value); }else{ if(key.startsWith(prefix)){ p.put(key, value); } } } return p; }
四、分页方法源代码
public Page findPageByCriteria(final DetachedCriteria dc, final int pageIndex, final int pageSize) { return (Page)getHibernateTemplate().execute(new HibernateCallback(){ public Object doInHibernate(Session session) throws HibernateException, SQLException { Criteria c = dc.getExecutableCriteria(session); int firstResult = (pageIndex - 1) * pageSize; //记录总数 int rowCount = ((Integer)c.setProjection(Projections.rowCount()).uniqueResult()).intValue(); //复位 c.setProjection(null); c.setResultTransformer(CriteriaSpecification.ROOT_ENTITY); //将结果类型转换为原实体类型 //记录集 List result = c.setFirstResult(firstResult).setMaxResults(pageSize).list(); //页对象 Page page = new Page(result, rowCount, pageIndex, pageSize); return page; } }, true); }
五、FTL模板源代码
<script language="javascript"> function chnageCurrentPage(_pageIndex){ var frm = document.all["frmPageNavigationBar"]; var objPageIndex = frm.pageIndex; if(objPageIndex==null){ objPageIndex = document.createElement("<input type='hidden' name='pageIndex' value='" + _pageIndex + "'/>"); frm.appendChild(objPageIndex); }else{ objPageIndex.value = _pageIndex; } frm.submit(); } </script> <form name="frmPageNavigationBar" method="post" action="${actionName}"> <#if params?has_content><!-- 所有请求参数包含在页导航条的Form中 --> <#list params?keys as key> <input type="hidden" name="${key}" value="${params[key]}" /> </#list> </#if> <table border="0" cellspacing="0" cellpadding="0" class="width9x" align="center"> <tr> <td>第 ${page.pageIndex?string("####")} 页/共 ${page.pageCount?string("####")} 页。找到 ${page.rowCount?string("####")} 条记录。</td> <td> </td> <td align="right" nowrap width="150"> <#if page.pageIndex gt 1> <a href="#" onclick="chnageCurrentPage(1);"><img src="images/pager/page-first.gif" border="0" alt="首页"></a> <a href="#" onclick="chnageCurrentPage(${page.pageIndex-1});"><img src="images/pager/page-prev.gif" border="0" alt="上一页"></a> <#else> <img src="images/pager/page-first-disabled.gif" border="0" alt="首页"> <img src="images/pager/page-prev-disabled.gif" border="0" alt="上一页"> </#if> <select name="pageIndexList" onchange="chnageCurrentPage(this.options[this.selectedIndex].value)";> <#list 1..page.pageCount as x> <option value="${x}">${x}</option> </#list> </select> <#if page.pageIndex lt page.pageCount> <a href="#" onclick="chnageCurrentPage(${page.pageIndex+1});"><img src="images/pager/page-next.gif" border="0" alt="下一页"></a> <a href="#" onclick="chnageCurrentPage(${page.pageCount});"><img src="images/pager/page-last.gif" border="0" alt="末页"></a> <#else> <img src="images/pager/page-next-disabled.gif" border="0" alt="下一页"> <img src="images/pager/page-last-disabled.gif" border="0" alt="末页"> </#if> </td> </tr> </table> </form>
六、tld配置
<tag> <name>pageNavigationBar</name> <tag-class>com.cjm.web.taglib.PageNavigationBarTag</tag-class> <body-content>JSP</body-content> <attribute> <name>pageBean</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>actionName</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag>
七、业务方法源代码
DetachedCriteria dc = DetachedCriteria.forClass(User.class); if(user != null){ CriteriaUtil.eq(dc, "username", user.getUsername()); CriteriaUtil.like(dc, "fullname", user.getFullname()); CriteriaUtil.eq(dc, "mobilephone", user.getMobilephone()); CriteriaUtil.eq(dc, "enabledTemp", user.getEnabledTemp()); if(user.getOrg() != null) CriteriaUtil.eq(dc, "org.orgId", user.getOrg().getOrgId()); } dc.addOrder(Order.asc("username")); Page page = getBaseService().findPageByCriteria(dc, getPageIndex(), 15); getValueStack().set("page", page);
八、JSP页面源代码
<s:iterator value="page.result" id="user" status="st"> <tr <s:if test="#st.odd">class="bg1"</s:if><s:else>class="bg2"</s:else>> <td align="center"><input type="checkbox" name="chk_o_<s:property value='#st.count'/>" value="<s:property value='#user.username'/>"></td> <td align="left"> <s:property value="#user.username"/></td> <td align="left"> <s:property value="#user.fullname"/></td> <td align="left"> <s:property value="#user.org.name"/></td> <td align="left"> <s:property value="#user.mobilephone"/></td> <td> <s:property value="#user.gender"/></td> <td> <s:property value="#user.enabledTemp"/></td> <td align="center"><a href="#" onclick="winOpen('userView.action?userId=<s:property value="#user.username"/>'),void(0);">查看</a></td> </tr> </s:iterator> <cjm:pageNavigationBar pageBean="page" actionName="userList.action"/>
评论
2 楼
nishifei
2008-12-01
先谢谢 大虾
1 楼
nishifei
2008-12-01
感觉写的很好, 非常感谢你能无私的 奉献出来, 但是小弟才疏学浅 , 要是能有你的Demo 就好了, 另外, 能不能 简单说说使用 方法。。。恭候。。小弟的邮箱 nshf_10@126.com
发表评论
-
在Struts2中对Ajax请求的异常进行统一处理
2016-04-18 18:32 7321、自定义异常类 public class AjaxExc ... -
struts2原理
2015-10-15 22:00 760一个Struts2请求处理的步骤大致如下: 1、 ... -
struts2 + poi 数据导出excel
2013-03-18 17:47 1544java源码: import java.io.ByteAr ... -
在Freemarker中使用JSP标签库
2010-06-02 17:24 7090Freemarker作为Struts2的其中一种结果类型,可以 ... -
Struts2 Convention插件的使用
2010-05-17 23:58 73031、常量说明 struts.convention ... -
学习笔记:杂项
2010-04-23 20:40 2756一、在web.xml文件配置Str ... -
Struts2插件的开发
2010-04-21 21:16 3272一、插件类 /** * 使用Struts2的Plugin ... -
读书笔记:Struts2拦截器
2008-11-10 21:19 15791、拦截器相关基础类 Interceptor接口 ... -
自定义标签:联动下拉框(二)
2008-10-27 09:48 3263四、下拉框数据获取方法的源代码 public String f ... -
自定义标签:联动下拉框(一)
2008-10-26 12:22 3464该标签主要实现以下功能:当父下拉框的当前值发生变化时 ... -
基于Struts2的通用文件上传实现(二)
2008-10-25 11:36 2593四、Action配置 <action name=&quo ... -
自定义标签:下拉框月份选择控件
2008-10-21 22:17 2897一、标签源代码 public class CalendarMo ... -
自定义标签:下拉框年份选择控件
2008-10-21 22:13 5735一、标签源代码 public cl ... -
基于Struts2的通用文件上传实现(一)
2008-10-21 21:19 5839该文件上传实现可以限制上传文件的类型,限制上传文件的最 ... -
自定义标签:在JSP页面中动态执行Spring Bean的方法
2008-10-06 13:37 6202使用该自定义标签,可以在JSP页面中动态执行某个Sp ... -
Struts2标签的使用
2008-09-25 12:36 19421、iterator标签:用于对集合进行迭代 &l ...
相关推荐
自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签...
本篇文章将详细讲解如何利用Hibernate框架的自定义标签来实现分页功能,供开发者们参考和借鉴。 首先,我们要了解Hibernate的基本概念。Hibernate是一个开源的对象关系映射(ORM)框架,它允许开发人员使用面向对象...
jsp使用自定义标签taglib分页系列——完整例子
5. **在JSP页面中使用自定义标签**:在JSP页面上引入自定义标签库,然后使用自定义的分页标签,传入必要的参数,如当前页码、总页数等。 ```jsp ... <fenye:pagination currentPage="${currentPage}" totalPages=...
在这个基于Struts2的自定义分页标签的实践中,我们将深入探讨如何创建、配置和使用自定义标签来实现数据的分页展示,同时与Oracle数据库进行交互。 首先,理解分页的基本概念至关重要。分页是将大量数据分成小块,...
自定义的漂亮分页标签,支持上下翻页,直接跳转指定页
//得到分页米尺数值 sb.append("function getMaxNum(){"); sb.append("var val=document.getElementById('onePageMaxNum').value;"); sb.append("if(val=='') return "+measurement+";"); sb.append(" return ...
1. **标签库描述符(TLD)**:在TLD文件中,开发者会声明这个分页标签,包括标签的名字、属性(如当前页数、总页数等)、以及指向标签处理类的引用。 ```xml <name>paging <tag-class>...
"强大的自定义标签分页"是指通过自定义JSP标签来实现灵活、高效的分页功能。这种方式可以提供更高的定制性,使得开发者可以根据项目需求进行个性化的设计和调整。 首先,我们来了解自定义标签。在Java Web开发中,...
在这个“java自定义标签分页”主题中,我们将深入探讨如何利用自定义标签来实现高效且易于维护的分页功能。 首先,自定义标签的定义通常涉及以下组件: 1. TLD(Tag Library Descriptor)文件:这是定义自定义标签...
要创建一个分页标签,我们需要: 1. 定义标签接口:在TLD(Tag Library Descriptor)文件中声明自定义标签,包括标签名、属性、导出的Java类等信息。 2. 编写标签实现类:继承`BodyTagSupport`,并覆盖必要的方法,...
在IT行业中,自定义标签(Custom Tags)和分页(Pagination)是两个常见的技术概念,它们在构建高效、用户友好的Web应用程序时起着至关重要的作用。本示例结合了这两个概念,提供了一种灵活且可重用的解决方案。 ...
4. **创建分页标签库**:Struts2支持自定义标签,你可以创建一个`.tld`文件来定义分页标签。标签库应该包含开始、结束、上一页、下一页等标签,以便在视图层中方便地使用。 5. **实现标签处理类**:对应的Java类...
本项目结合了Java、Hibernate、JSP以及TLD(Tag Library Descriptor)技术,实现了一个高效、易懂且实用的自定义标签分页解决方案。下面我们将详细探讨这些技术以及它们在分页中的应用。 首先,Java作为后端编程...
自定义页面分页标签是指开发者根据项目需求,创建个性化的分页组件,以实现更加灵活、符合界面设计风格的分页功能。下面将详细探讨如何实现自定义页面分页标签及其相关的知识点。 1. **基础概念**: - 分页:将...
在JavaServer Pages (JSP) 开发中,为了提高代码的可维护性和重用性,开发者经常使用自定义标签库。本主题将深入探讨“jsp自定义分页标签”,这是一种在网页展示大量数据时非常实用的功能,它可以有效地帮助用户浏览...
例如,你可以创建一个自定义标签用于处理分页数据,接受页码和每页数量作为参数,然后在后台查询数据库并返回相应的页面内容。 此外,FreeMarker还支持自定义函数,它们类似于JavaScript中的函数,可以接收参数并...
在JSP页面中,我们可以这样使用自定义分页标签: ```jsp <mypagination:pagination recordsPerPage="10" totalRecords="${messageCount}" currentPage="${currentPage}" /> ``` 在这个例子中,`messageCount`和`...
本例中,我们探讨的是如何结合Struts、Hibernate和自定义标签实现分页功能,这是一种常见的优化用户界面体验的技术,特别是对于数据量大的查询结果。 1. **分页原理** 分页的基本思想是将大量数据分成多个小部分,...