- 浏览: 185558 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (98)
- Ext (3)
- Tomcat (3)
- Spring (2)
- oracle (4)
- Display Tag (1)
- js (2)
- jquery form.js (1)
- 乱码 (1)
- Flex (6)
- Eclipse (1)
- XMLWriter编码问题 (1)
- java获取项目的路径 (1)
- dom4j xpth 问题 (1)
- 概要设计文档格式 (1)
- 解决eclipse和myeclipse不能编译项目的问题 (1)
- webservice (2)
- jsp (1)
- jquery (1)
- Linux (5)
- java 把页面生成pdf (2)
- Hibernate (1)
- Netty (1)
- openfire (1)
- Maven (1)
最新评论
-
qqlonglongqq:
解决eclipse和myeclipse不能编译项目的问题 -
brightfox:
这些参数在谷歌浏览器上不支持,比如最大化、最小化等,请问怎么解 ...
window.open 打开窗口的参数详解 -
huang_yong:
还有一种情况,若直接调用了delete函数,也会出现这个问题。 ...
Ext: 由于出现错误 80020101 而导致此项操作无法完成。
Display Tag Lib是一个标签库,用来处理jsp网页上的Table,功能非常强,可以对的Table进行分页、数据导出、分组、对列排序等等,反正我在做项目时需要的功能它都给我提供了,而且使用起来非常的方便。能够大大减少代码量。 这个是Display Tag的官方网站http://displaytag.sourceforge.net。 首先当然是要下载它的jar包了,这里可以下载到最新的版本。将jar包放到WEB-INF的lib文件夹下。另外还需要其他辅助包:apache的commons-lang,commons-collections和standard包,更多的辅助包可以在这里下载。 在web.xml添加 <taglib> <taglib-uri>http://displaytag.sf.net</taglib-uri> <taglib-location>/WEB-INF/displaytag.tld</taglib-location> </taglib> 在jsp页面添加 <%@ taglib uri="http://displaytag.sf.net" prefix="display" %> 首先我们定义一个list <% List test = new ArrayList( 6 ); test.add( "Test String 1" ); test.add( "Test String 2" ); test.add( "Test String 3" ); test.add( "Test String 4" ); test.add( "Test String 5" ); test.add( "Test String 6" ); request.setAttribute( "test", test ); %> 当我们想在jsp页面上显示这个list时,我们只需要写一句话 <display:table name="test" /> display tag会自动生成一个table 如果list是从控制层抛出来的,name可使用EL表达式表示 <display:table name="${test}" /> 这是最简单的display tag的使用,我们可以给它加上样式等,也可以定义显示的列,下面的table显示复杂一些 <display:table name="test" styleClass="list" cellspacing="0" cellpadding="0"> <display:column property="id" title="ID" class="idcol"/> <display:column property="name" /> <display:column property="email" /> <display:column property="description" title="Comments"/> </display:table> 如果想要给它加个链接也很简单,下面的代码给name加了连接,并附带id参数,email也自动连接到mailto:XXX <display:table name="test" styleClass="list" cellspacing="0" cellpadding="0"> <display:column property="id" title="ID" class="idcol"/> <display:column property="name" url="detail.jsp" paramId="id" paramProperty="id"/> <display:column property="email" autolink="true"/> <display:column property="description" title="Comments"/> </display:table> 下面介绍几个Display最常用的功能,更多功能请参考http://displaytag.homeip.net/displaytag-examples-1.1/。 1. 分页 如果想对代码分页,只需在display:table标签中添加一项pagesize="每页显示行数",如 <display:table name="test" pagesize="10"/> 2. 对列排序 display tag可对列进行排序,就是点击列名,对该列的数据进行排序。你只需对想要排序的列添加 sort="true" 就OK,如下面的代码可对前三列进行排序。在display:table中添加defaultsort="列数",可默认对指定的列排序。 <display:table name="test" styleClass="list" cellspacing="0" cellpadding="0" defaultsort="1"> <display:column property="id" title="ID" class="idcol" sort="true"/> <display:column property="name" url="detail.jsp" paramId="id" paramProperty="id" sort="true"/> <display:column property="email" autolink="true" sort="true"/> <display:column property="description" title="Comments"/> </display:table> 如果table有分页,Display Tag默认只对当前页进行排序,如果想对整个list排序,可以在display:table之间添加一段代码: <display:setProperty name="sort.amount" value="list"/> 3. 导出数据 在display:table中添加export="true",看看会出现什么!Display Tag默认会提供三种数据导出方式:CSV、Excel、XML 。 另外Display Tag还可以导出为PDF格式,在http://prdownloads.sourceforge.net/itext/下载一个辅助包iText.jar,copy到lib目录下,然后在display:table之间添加一段代码: <display:setProperty name="export.pdf" value="true"/>,大功告成。 4. Display Tag的属性设置 前面所说的display:setProperty 是一种改变Display Tag属性的方法,但是在每个jsp中都要写太麻烦了。 Display Tag中设置了很多默认的属性,它有一个专门的属性文件,是在它的jar包中的displaytag/properties/TableTag.properties 想要改变它的默认属性,我们可以在WEB-INF\classes下新建一个文件displaytag.properties,仿照TableTag.properties中属性的格式设置需要修改的属性。 TableTag.properties中的# messages中设置的是显示在页面上的提示信息。默认是英文的,我们可以把它改为中文的。不过这里只能使用unicode,就是说中文字符必须转换为 unicode码,这个可以使用jdk自带的native2ascii.exe进行转换。 5. 其它功能 DisplayTag还有一些很实用的小功能,这里提两个。一个是对数据的Format,这是1.1版本添加的新功能,可以使用标签的方式格式化时间、数字、字符串。比如日期,在需要格式化的column标签中添加format="{0,date,yyyy-MM-dd}",第一个参数为格式化的数据序号,第二个参数是数据类型,数字为number,第三个参数为数据格式。 另外一个功能是对table数据的合计功能。在table标签中添加 decorator="org.displaytag.decorator.TotalTableDecorator",然后在想要进行合计的数据列的 column标签中添加 total="true",该列就可以被计算总数了。但这个功能有个缺点,不能用在有分页的时候,它只能合计第一页的数据。 DisplayTag的不足 初次使用DisplayTag的人可能会觉得惊喜,但是用久了会发现很多问题,最大的问题是对中文的支持不好,比如如果查询条件中有中文,就无法翻页,无法对中文排序,将中文导出为指定文件时出现乱码等等。这些问题有时候会让人很郁闷,有时候逼得你要去修改它的源代码。下面是对以上几个问题的解决方法: 1. 对于中文无法翻页、排序,最简单的办法是修改Tomcat下的server.xml文件。找到HTTP的Connector标签,在里面添加一项 URIEncoding="...",引号里面的内容取决于你的页面编码,比如可以是GBK,UTF8等。这样上面两个问题就可以解决了。 2. 导出为文件:其实这个功能除了中文支持外还有很多其它问题,比如它会将Html标签一起导出、只导出显示的内容,但如果对table进行了 decorator,decorator后的内容无法导出。如果想要将中文正确导出,需要修改DisplayTag源代码。 下载相同版本的源代码,在org.displaytag.export.ExcelView.java文件中找到getMimeType()方法,将此方法修改为 return "application/vnd.ms-excel;charset=GB2312";,修改后导出数据的速度会慢很多,不过将就吧。 3. 新版的DisplayTag1.1添加了对一次取部分数据的支持,相关的标签包括partialList和size,需要设置partialList="true"和size的大小。具体怎么用偶还没研究。 一、最简单的情况,未使用<display:column/>标签 <%request.setAttribute( "test", new ReportList(6) );%> <display:table name="test" /> 标签遍历List里的每一个对象,并将对象里的所有属性显示出来。一般用于开发的时候检查对象数据的完整性。 二、使用<display:column/>标签的情况 <display:table name="test"> <display:column property="id" title="ID" /> <display:column property="name" /> <display:column property="email" /> <display:column property="status" /> <display:column property="description" title="Comments"/> </display:table> property对应List里对象的属性(用getXXX()方法取得),title则对应表格表头里的列名。定义列有两种方式: A、<display:column property="email" /> 使用<display:column/>标签里的property属性来定义 B、<display:column title="email">email@it.com</display:column> 在<display:column/>标签体里增加内容,可以是常量,也可以用其他标签等等 两种方式比较,用property属性来定义更加快速和利于排序。 三、表格显示样式的定义 A、在<display:table/>和<display:column/>标签里指定标准的html属性,烦琐 B、修改样式表 <display:table name="test" class="mars"> <display:column property="id" title="ID" class="idcol"/> <display:column property="name" /> <display:column property="email" /> <display:column property="status" class="tableCellError" /> <display:column property="description" title="Comments"/> </display:table> 通过class属性来指定所要应用的样式。可以在其默认样式表里(./css/screen.css)直接修改 四、标签取得数据的数据源 有四种范围 pageScope requestScope (默认) <display:table name="test2" > sessionScope <display:table name="sessionScope.holder.list" > 注意,这里要指定范围,非默认 applicationScope 五、通过增加id属性创建隐含的对象 <display:table name="test" id="testit"> <display:column property="id" title="ID" /> <display:column property="name" /> <display:column title="static value">static</display:column> <display:column title="row number (testit_rowNum)"> <%=pageContext.getAttribute("testit_rowNum")%></display:column> <display:column title="((ListObject)testit).getMoney()"> <%=((ListObject)pageContext.getAttribute("testit")).getMoney()%> </display:column> </display:table> 注意到在<display:table/>里增加了id属性,这时就在page context里创建了一个隐含对象,指向List里的当前对象, 可以通过(ListObject)pageContext.getAttribute("id")来捕获这个对象。同时还创建了一个id_rowNum对象,同样,可 通过pageContext.getAttribute("testit_rowNum")来捕获,它仅仅代表当前行的行数。 有了这两个隐含对象,就可以通过其他标签来访问,例如Jstl: <display:table id="row" name="mylist"> <display:column title="row number" > <c:out value="${row_rowNum}"/> </display:column> <display:column title="name" > <c:out value="${row.first_name}"/> <c:out value="${row.last_name}"/> </display:column> </display:table> 六、显示部分数据 显示开始五条数据:通过设定length属性 <display:table name="test" length="5"> <display:column property="id" title="ID" /> <display:column property="email" /> <display:column property="status" /> </display:table> 显示第三到第八条数据:通过设定offset和length属性 <display:table name="test" offset="3" length="5"> <display:column property="id" title="ID" /> <display:column property="email" /> <display:column property="status" /> </display:table> 七、对email和url地址的直接连接 <display:table name="test" > <display:column property="id" title="ID" /> <display:column property="email" autolink="true" /> <display:column property="url" autolink="true" /> </display:table> 如果要显示的对象里包含email和url地址,则可以在display:column里直接设定autolink="true"来直接连接 八、使用装饰模式转换数据显示(写自己的 decorator ) A、对整个表格应用decorator <display:table name="test" decorator="org.displaytag.sample.Wrapper" > <display:column property="id" title="ID" /> <display:column property="email" /> <display:column property="status" /> <display:column property="date" /> <display:column property="money" /> </display:table> org.displaytag.sample.Wrapper即自己写的decorator,它要继承TableDecorator类,看看它的一个方法: public String getMoney() { return this.moneyFormat.format(((ListObject) this.getCurrentRowObject()).getMoney()); } 很明显,它通过父类的getCurrentRowObject()方法获得当前对象,然后对其getMoney()方法进行‘油漆’ B、对单独的column应用decorator <display:table name="test"> <display:column property="id" title="ID" /> <display:column property="email" /> <display:column property="status" /> <display:column property="date" decorator="org.displaytag.sample.LongDateWrapper" /> </display:table> org.displaytag.sample.LongDateWrapper要实现ColumnDecorator接口,它的方法: public final String decorate(Object columnValue) { Date date = (Date) columnValue; return this.dateFormat.format(date); } 显然,它获得不了当前对象(因为它实现的是接口),仅仅是获得该对象的columnValue,然后‘油漆’ 九、创建动态连接 有两种方法创建动态连接: A、在<display:column/>里通过增加href、paramId、paramName、paramScope、paramProperty属性 href 基本的URL 地址 paramId 加在URL 地址后的参数名称 paramName 数据bean的名称,一般为null(即使用当前List里的对象) paramScope 数据bean的范围,一般为null paramProperty 数据bean的属性名称,用来填充URL 地址后的参数值 <display:table name="sessionScope.details"> <display:column property="id" title="ID" href="details.jsp" paramId="id" /> <display:column property="email" href="details.jsp" paramId="action" paramName="testparam" paramScope="request" /> <display:column property="status" href="details.jsp" paramId="id" paramProperty="id" /> </display:table> 这种方法简便直接,但缺点是无法产生类似details.jsp?id=xx&action=xx的复合URL B、应用decorator 创建动态连接: <display:table name="sessionScope.details" decorator="org.displaytag.sample.Wrapper" > <display:column property="link1" title="ID" /> <display:column property="email" /> <display:column property="link2" title="Actions" /> </display:table> org.displaytag.sample.Wrapper里的方法: public String getLink1() { ListObject lObject= (ListObject)getCurrentRowObject(); int lIndex= getListIndex(); return "<a href=\"details.jsp?index=" + lIndex + "\">" + lObject.getId() + "</a>"; } public String getLink2() { ListObject lObject= (ListObject)getCurrentRowObject(); int lId= lObject.getId(); return "<a href=\"details.jsp?&action=view\">View</a> | " + "<a href=\"details.jsp?&action=edit\">Edit</a> | " + "<a href=\"details.jsp?&action=delete\">Delete</a>"; } 十、分页 实现分页非常的简单,增加一个pagesize属性指定一次想显示的行数即可 <display:table name="sessionScope.test" pagesize="10"> <display:column property="id" title="ID" /> <display:column property="name" /> <display:column property="email" /> <display:column property="status" /> </display:table> 十一、排序 排序实现也是很简单,在需要排序的column里增加sortable="true"属性,headerClass="sortable"仅仅是 指定显示的样式。column里的属性对象要实现Comparable接口,如果没有的话可以应用decorator defaultsort="1" 默认第一个column排序 defaultorder="descending" 默认递减排序 <display:table name="sessionScope.stest" defaultsort="1" defaultorder="descending"> <display:column property="id" title="ID" sortable="true" headerClass="sortable" /> <display:column property="name" sortable="true" headerClass="sortable"/> <display:column property="email" /> <display:column property="status" sortable="true" headerClass="sortable"/> </display:table> 注意的是,当同时存在分页时排序仅仅针对的是当前页面,而不是整个List都进行排序 十二、column 分组 分组只是需要在column里增加group属性 <display:table name="test" class="simple"> <display:column property="city" title="CITY" group="1"/> <display:column property="project" title="PROJECT" group="2"/> <display:column property="amount" title="HOURS"/> <display:column property="task" title="TASK"/> </display:table> 十三、导出数据到其他格式(页面溢出filter??) 在<display:table/>里设定export="true" 在<display:column/>里设定media="csv excel xml pdf" 决定该字段在导出到其他格式时被包不包含,不设定则都包含 <display:setProperty name="export.csv" value="false" /> 决定该种格式能不能在页面中导出 <display:table name="test" export="true" id="currentRowObject"> <display:column property="id" title="ID"/> <display:column property="email" /> <display:column property="status" /> <display:column property="longDescription" media="csv excel xml pdf" title="Not On HTML"/> <display:column media="csv excel" title="URL" property="url"/> <display:setProperty name="export.pdf" value="true" /> <display:setProperty name="export.csv" value="false" /> </display:table> 十四、配置属性,覆盖默认 两种方法: A、在程序classpath下新建displaytag.properties文件 B、对于单个表格,应用<display:setProperty>标签 具体可配置的属性:http://displaytag.sourceforge.net/configuration.html 十五、一个完整的例子 <display:table name="test" export="true" sort="list" pagesize="8"> <display:column property="city" title="CITY" group="1" sortable="true" headerClass="sortable"/> <display:column property="project" title="PROJECT" group="2" sortable="true" headerClass="sortable"/> <display:column property="amount" title="HOURS"/> <display:column property="task" title="TASK"/> </display:table> sort="list" 对整个list进行排序 导出数据到其他格式时,group无效 在这里我要提出一点,当display tag显示的数据与后台所给的数据不一致,可以用JSTL: <display:table name=".." id="listTable" pagesize=".." class=".." export="true" requestURI=""> <display:column sortable="true" headerClass="sortable" title="TYPE"> <c:if test="${listTable.type==0}"><!--listTable必须与上面的display:table的id属性值相同--> 类型0 </c:if> <c:if test="${listTable.type==1}"> 类型1 </c:if> <c:if test="${listTable.type==2}"> 类型2 </c:if> <c:if test="${listTable.type==3}"> 类型3 </c:if> </display:column>
相关推荐
"Display Tag 1.1.1" 是一个用于Java Web开发的开源分页显示框架,专为呈现数据表格而设计。这个框架简化了在网页上展示大量数据的过程,提供了多种功能,如排序、分页、导出数据以及自定义样式等。在Java应用中,...
首先,Display Tag 需要依赖一些jar包,这些jar包通常位于名为"lib"的目录下。主要包括displaytag.jar、jstl.jar、standard.jar、commons-lang3.jar、commons-collections4.jar等。这些jar包提供了Display Tag的核心...
Display Tag 是一个开源的 JavaServer Pages (JSP) 标签库,用于简化在 Web 应用中创建复杂的表格和列表视图。它提供了许多高级功能,如分页、排序、导出、国际化和样式定制,极大地提高了开发效率和用户体验。以下...
总之,`display:tag`标签库通过一系列jar包、CSS文件和图片资源,为Java Web开发提供了强大的数据展示和管理工具,使得开发者能够更高效地构建功能丰富的用户界面。理解和掌握这些依赖关系对于成功集成和使用`...
在Web开发过程中,特别是使用Java技术栈进行开发时,经常会遇到需要展示大量数据的情况,例如用户列表、订单列表等。为了更方便地实现这样的功能,开发者通常会选择使用一些成熟的插件来辅助开发。DisplayTag就是...
总之,DisplayTag 是一个强大且灵活的 JSP 标签库,它简化了 JSP 页面中表格数据的处理,提高了开发效率,同时提供了丰富的功能,如分页、排序、导出和自定义渲染,使得在 Web 应用中展示和操作数据变得更加便捷。
Looking to incorporate mail facilities into your platform-independent Java solutions? Look no further than the JavaMail API, which offers a protocol-independent model for working with IMAP, POP, ...
JSTL(JavaServer Pages Standard Tag Library,JavaServer页面标准标签库)是为简化和标准化JavaServer Pages (JSP) 页面开发而设计的一组标签库。它提供了一系列的标签来执行常见的任务,如循环、条件判断、国际化...
JSTL(JavaServer Pages Standard Tag Library,JavaServer Pages 标准标签库)是为简化和标准化 JavaServer Pages 开发而设计的一组标准标签。通过使用 JSTL,开发者可以减少 JSP 页面中的脚本代码量,提高代码的...
DisplayTag是一种广泛应用于Java Web开发中的开源分页和表格展示标签库。它为开发者提供了一种高效、灵活的方式来处理数据的分页、排序、导出等功能,极大地简化了前端页面与后端数据交互的复杂性。这个技术尤其适用...
3. **JSTL(JavaServer Pages Standard Tag Library)**:简化JSP编程,提供一系列标签库,如JSTL SQL标签用于数据库操作。 **五、部署与运行** 部署JSP留言板通常涉及以下步骤: 1. 创建数据库表结构,用于存储...
该标签库的目标是为开发者提供一种方便的方式来处理表格数据,无需编写复杂的 JSP 或 Java 代码。 #### 二、DisplayTag 的特点与优势 ##### 2.1 易于集成 DisplayTag 可以轻松地与现有的 Web 应用程序集成。它只...
- **Display Tag** 用于列表屏幕的展示,包括排序和分页功能。 - **Hibernate** 是持久化引擎,负责对象关系映射。 - **Cactus** 用于单元测试服务器端Java代码。 - **Log4j** 日志框架,可以发送错误邮件。 - **...
create or replace library systemcalls is ‘/lib/libc.so‘; / grant necessary database privileges to tfmadmin tfmAdmin_privs_and_syns.sql grant necessary java privileges to tfmadmin tfmAdmin_java_...
Struts提供了丰富的自定义标签库,可以在JSP页面中使用这些标签来简化页面的开发工作。例如,`<bean:message>`用于国际化消息处理;`<html:form>`用于表单处理;`<logic:iterate>`用于循环显示数据集合等。 ### 四...
6. `jstl_sql.jsp` 和 `jstl_xml.jsp` - 这两个文件使用了JSTL(JavaServer Pages Standard Tag Library),可能分别展示了如何处理SQL查询和XML数据。JSTL简化了JSP页面的代码,使其更易读、更易于维护。 7. `xsl_...
- **功能齐全的标签库(Tag Library)**:Struts2提供了丰富的标签库,可以帮助开发者更高效地开发页面逻辑,减少了页面代码的复杂度。 - **开源性**:Struts2是开源项目,这意味着开发者可以自由地获取其源代码并...
JSTL(JavaServer Pages Standard Tag Library)是一组标准标签库,用于简化JSP页面的开发。为了支持JSTL,需要做以下工作: 1. **下载JSTL库**:从官网下载`jakarta-taglibs-standard-1.1.2.zip`文件,从中提取出`...