DisplayTag的分页方案.doc_第1页
DisplayTag的分页方案.doc_第2页
DisplayTag的分页方案.doc_第3页
DisplayTag的分页方案.doc_第4页
DisplayTag的分页方案.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 基于DisplayTag的分页方案DisplayTag说明Display Tag Lib是一个标签库,用来处理jsp网页上的Table,功能非常强,可以对的Table进行分页、数据导出、分组、对列排序等等。具体的说明请参考Display Tag的官方网站。DisplayTag为一个开源的标签库,使用DisplayTag必须从网站下载DisplayTag的jar包,并将jar引用到用户所用的工程中。同时,DisplayTag.jar依赖Apache项目的支持,所以在使用同时,必须下载Apache相关的jar包。配置类库标签DisplayTag使用了两个标签,displaytag-1.1.tld和fmt.tld。使用了servlet2.4以前的版本,需要在web.xml中配置。 / /WEB-INF/displaytag-11.tld /WEB-INF/fmt /WEB-INF/fmt.tld 两个标签中,displaytag-1.1.tld是DisplayTag的官方标签,另外fmt.tld的标签作用是为了显示中文而设定的。构造页面显示的ListDisplayTag能够在request和session范围内获得相关的List。所有的数据必须从List中获得。1.单表查询结果集List userList=getHibernateTemplate().find(“from user”);Request.setAttribute(“userList”, userList);2.多表查询结果集List userCustomerList=getHibernateTemplate().find(“select new MyObject(user.Name,user.No.) from user,customer”);Request.setAttribute(“userCustomerList”,” userCustomerList”);要先定义好MyObject这个class,并且有new MyObject(.)构造函数3.以上两种方法每次在翻页时,都是对所有查询结果进行一次查询,如果想实现每次只查询10条数据,则需要自己构造sql执行。DisplayTag提供了一些变量.String strPage = request.getParameter(page);String strDir = request.getParameter(dir);String strSort = request.getParameter(sort);Action从request里面获得这三个参数,都是DisplayTag自动生成的,用户无需管理这三个参数。DisplayTag页面基本组成1. 要引入标签2. 在页面上使用displayTag标签1) 最简单的情况标签遍历List里的每一个对象,并将对象里的所有属性显示出来。一般用于开发的时候检查对象数据的完整性。2) 使用标签的情况property对应List里对象的属性(用getXXX()方法取得),title则对应表格表头里的列名。定义列有两种方式:A、使用标签里的property属性来定义B、在标签体里增加内容,可以是常量,也可以用其他标签等等两种方式比较,用property属性来定义更加快速和利于排序3) 表格显示样式的定义A、 在和标签里指定标准的html属性B、修改样式表通过class属性来指定所要应用的样式(自己定义的样式)。也还可以在其默认样式表里(./css/screen.css)直接修改4) 标签取得数据的数据源有四种范围pageScoperequestScope (默认)sessionScope 注意,这里要指定范围,非默认applicationScope5) 通过增加id属性创建隐含的对象$row.first_name-$row.last_name注意到在里增加了id属性,这时就在page context里创建了一个隐含对象,指向List里的当前对象; 同时还创建了一个id_rowNum对象,它仅仅代表当前行的行数。6) 显示部分数据显示开始五条数据:通过设定length属性显示第三到第八条数据:通过设定offset和length属性7) 对email和url地址的直接连接如果要显示的对象里包含email和url地址,则可以在display:column里直接设定autolink=true来直接连接8) 使用装饰模式转换数据显示(写自己的 decorator )A、对整个表格应用decoratororg.displaytag.sample.Wrapper即自己写的decorator,它要继承TableDecorator类,看看它的一个方法:public class Wrapper extends TableDecoratorpublic String getMoney()MyObject obj=(MyObject)this.getCurrentRowObject();return this.moneyFormat.format(obj.getMoney();很明显,它通过父类的getCurrentRowObject()方法获得当前对象,然后对其getMoney()方法进行油漆B、对单独的column应用decoratororg.displaytag.sample.LongDateWrapper要实现ColumnDecorator接口,它的方法:public final String decorate(Object columnValue)Date date = (Date) columnValue;return this.dateFormat.format(date);显然,它获得不了当前对象(因为它实现的是接口),仅仅是获得该对象的columnValue,然后油漆9) 创建动态连接有两种方法创建动态连接:A、在里通过增加href、paramId、paramName、paramScope、paramProperty属性href 基本的URL 地址paramId加在URL 地址后的参数名称paramName数据bean的名称,一般为null(即使用当前List里的对象)paramScope 数据bean的范围,一般为nullparamProperty数据bean的属性名称,用来填充URL 地址后的参数值这种方法简便直接,但缺点是无法产生类似details.jsp?id=xx&action=xx的复合URLB、应用decorator 创建动态连接,可以创建复合URL,函数:org.displaytag.sample.Wrapper里的方法:public String getLink1()ListObject lObject= (ListObject)getCurrentRowObject();int lIndex= getListIndex();return + lObject.getId() + ;public String getLink2()ListObject lObject= (ListObject)getCurrentRowObject();int lId= lObject.getId();return View | + Edit | + Delete;C.通过Id生成隐藏对象来实现,见上文.10) 分页实现分页非常的简单,增加一个pagesize属性指定一次想显示的行数即可11) 排序排序实现也是很简单,在需要排序的column里增加sortable=true属性,headerClass=sortable仅仅是指定显示的样式。column里的属性对象要实现Comparable接口,如果没有的话可以应用decoratordefaultsort=1默认第一个column排序defaultorder=descending默认递减排序注意的是,当同时存在分页时排序仅仅针对的是当前页面,而不是整个List都进行排序12) column 分组分组只是需要在column里增加group属性同样只能对当前页进行分组。注意:第一列一定要1,第二列一定是2,否则出NUllPoint 错误。13) 导出数据到其他格式在里设定export=true在里设定media=csv excel xml pdf 决定该字段在导出到其他格式时被包不包含,不设定则都包含决定该种格式能不能在页面中导出14) 配置属性,覆盖默认两种方法:A、在程序classpath下新建perties文件B、对于单个表格,应用标签具体可配置的属性:/configuration.html15)增加表头表尾增加表头*管理增加表尾 *版权所有主要注意一下: 内容必须是.16) 表格里面还有表格. 很简单.只要在外层表的 ( 在这加。 即可) 17)修改分页样式关键值display:setProperty name=paging.banner.one_item_found value= /display:setProperty name=paging.banner.some_items_found value= /display:setProperty name=paging.banner.all_items_found value= /display:setProperty name=paging.banner.first value= /display:setProperty name=paging.banner.full value= /display:setProperty name=paging.banner.last value= /display:setProperty name=paging.banner.onepage value=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论