问题

想要一个更加简单的支持列表数据分页和排序的方法。

解决方案

使用Display标签库和JSP标签库。

例4.13介绍了一个JSP页,它使用4.5节中的数据模型显示美国总统列表。这个JSP页面使用display标签库显示了一个表。这个页可以交替显示不同行的颜色,允许分页、排序,并且不要求任何自定义的Java代码。

例4.13:DisplayTag示例

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@ taglib uri="http://displaytag.sf.net/el" prefix="display" %>

<html>

<head>

<title>Struts Cookbook - Chapter 4 : Display Tag Example</title>

<style>

.even {background-color:orange;}

.odd {background-color:yellow;}

</style>

</head>

<body>

<h2>Display Tag Examples</h2>

<jsp:useBean id="pagedData" class="com.oreilly.strutsckbk.ch04.

    PagedData"/>

<display:table id="pres" name="${pagedData.data}"

                 sort="list" pagesize="10" defaultsort="3">

    <display:caption>United States Presidents</display:caption>

   <display:setProperty name="basic.show.header" value="true"/>

    <display:column property="firstName" title="First Name"

                    sortable="true"/>

    <display:column property="lastName" title="Last Name"

                    sortable="true"/>

    <display:column property="term" title="Term of Office"

                    sortable="true"/>

</display:table>

</body>

</html>

讨论

display标签库是一个开源的标签库,您可以使用它的很多功能来显示列表数据。这个解决方案创建的页面如图4.8所示。

web页如图4.8所示,使用很少的自定义标签就能封装创建表的很多功能。假如将这个方法与以前的相比,就会明白为什么这个方法如此流行。

注意:这个方法提供了表现层的分页。对于来自底层持久层的数据总数没有任何                         限制。

要用display标签库,需要从http://displaytag.sourceforge.net下载。下载完毕后,复制displaytag.jar文件到web应用程序的WEB-INF/lib文件夹。还需要复制一个标签库描述符(.tld)文件到您的文件夹。Display标签提供两种选择。此方案使用了displaytags-el.tld文件。这些标签支持JSTL表达式的属性值。

EL-version的display标签要求jst1.jar和standard.jar的JAR文件放在WEB-INF/lib文件夹中。

display标签库依赖于Jakarta Commons Lang library 2.0或者更新的版本commons-lang-2.0.jar。



图4.8 使用display标签创建的表

提示:在写这本书的时候,Struts 1.1使用了Commons Lang的早期版本,而Struts 1.2并没有包括Commons Lang的任何版本。您可以从http://jakarta.apache.org/ commons下载commons-lang-2.0.jar。在WEB-INF/lib文件夹中把commons-lang.jar替换成commons-lang-2.0.jar。从这时起,不会再有任何关于不兼容或者依赖的问题了。

display标签提供了很多功能并且都很容易使用。首先,display:table标签指定了关于整个表的信息:

<display:table id="pres" name="${pagedData.data}"

             sort="list" pagesize="10" defaultsort="3">

id属性创建了一个域变量,该变量可以用作引用当前的行。name属性指定要显示的集合,sort属性指明数据如何排序,list指定整个列表都被排序,page指出只有当前页可见数据才可以排序,pagesize属性的值表示每页所显示行的数量。

提示:设置pagesize属性将自动实现分页。

defaultsort属性在数据最初排序时指定列(从1开始)。在这个方案中,这个值设置为3,即按“Term of Office”列排序。

display:caption标签在列头上绘制表的标题:

<display:caption>United States Presidents</display:caption>

display:column标签指定要显示的每一列的信息:

<display:column property="firstName" title="First Name"

                sortable="true"/>

property属性指定JavaBean属性,这些属性保存列的数据。title属性指定在列头显示的文本。sortable属性指定数据是否能够按照这个列进行排序。假如这个值设置为true,那么点击列头就会按照该列排序。

display标签库提供了将显示数据导出到XML、Excel工作簿、逗号分隔值(.csv)文件的功能。这个功能可以通过一些库中的servlet过滤器来实现。接着设置display:table标签的export属性值为true。相关文档提供了display标签有关设置export功能的所有                 细节。

相关链接

display标签库的完全细节可以在它的网站上找到:http://displaytag.sourceforge.net。4.3节、4.4节和4.5节介绍了如何通过其他的方法完成类似的功能。这些“自我实现”的章节在使用display标签时就不那么必要了,但它们会帮助您理解这些基本功能是如何实现的。

display标签交替显示不同行颜色的更多相关文章

  1. Java POI 实现Excel相同数据同一颜色,不同数据颜色交替显示

    目录 1.效果图 2.具体代码实现 excel 读取工具类 excel写入和测试类 1.效果图 2.具体代码实现 excel 读取工具类 package utils; import java.io.F ...

  2. html中让多个li标签横排显示

    1.我们可以通过为ul标签下所有li标签设定样式“display:inline-block”的方式,让多个li标签横排显示 2.除了以上方法,我们还可以所有li标签使用float(浮动)的方式,让多个 ...

  3. Button四角有弧度及按下显示不同的颜色

    一般的button都是矩形或者正方形,但为了显示不同的效果,让界面更美化,可以对其进行处理!!! 1.四角有弧度的button 2.按下button显示不同的颜色 实现步骤: 首先在drawable文 ...

  4. 如何在一个div标签里显示出另一个网页? <iframe src=" http://www.baidu.com " width="800px" height="200px" scrolling="no" frameborder="0"> </iframe>

    如何在一个div标签里显示出另一个网页? 用在div里用iframe,就像下面的代码 <iframe src=" http://www.baidu.com " width=& ...

  5. 对table的tr使用display:block显示colspan失效问题的解决

    qqqq <table> <tr> <td id="qqq" colspan="3" style="display:no ...

  6. Lable 控件 -- 用代码改变要显示字体的颜色

    lable控件怎么改变显示字体的颜色 代码如下: string color = "#B72C34"; this.lbl.ForeColor = System.Drawing.Col ...

  7. MyEclipse导入主题文件epf后xml及jsp等页面中点击标签之后显示灰白

    MyEclipse导入主题文件epf后xml及jsp等页面中点击标签之后显示灰白,症状例如以下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVVAxOT ...

  8. 前端 html input标签 placeholder属性 标签上显示内容

    前端 html  input标签 的placeholder属性  标签上显示内容 <!DOCTYPE html> <html lang="en"> < ...

  9. DocumentManager 在标签位置显示气泡框 z

    关于DevExpress DockManager下的DocumentManager头部标签如何显示气泡框,类似Visual studio那样显示文件的路径,如下图所示,------- 方式很简单,从工 ...

  10. DocumentManager在标签位置显示气泡框 z

    关于DevExpress DockManager下的DocumentManager头部标签如何显示气泡框,类似Visual studio那样显示文件的路径,如下图所示,------- 方式很简单,从工 ...

随机推荐

  1. DBGRIDEH 鼠标滚动 和 点击单元格解决思路【无意间看到,主从表】

    DBGRIDEH 鼠标滚动 和 点击单元格因为我是用2个DBgridEH,主表数据变化(用的是OnCellClick),明细表也变化.现在的情况时,鼠标滚动时,明细表数据不变化好像也没看到相关的事件请 ...

  2. Oracle迁移到MySQL时数据类型转换问题

    最近在做"去O"(去除Oracle数据库)的相关工作,需要将Oracle表结构转换成MySQL的表结构.这里面最重要的一点就是字段数据类型的变化. 1.ORACLE常用的数据类型与 ...

  3. Asp-Net-Core学习笔记:3.使用SignalR实时通信框架开发聊天室

    SignalR牛刀小试 在MVP杨老师的博客里看到这么个东西,我还以为是NetCore3才推出的新玩意,原来是已经有很多年的历史了,那看来还是比较成熟的一个技术了. 简介 SignalR是一个.NET ...

  4. JS 页面离开事件 页面关闭事件,实现登录成功返回上个页面

    壹 ❀ 引 登录成功后跳转到上一个页面是很常见的需求,比如在天猫添加购物车时网站会效验用户登录情况,若未登录则跳转登录,登录成功返回到先前的商品页. 这个功能实现并不困难,但因为我的奇思妙想让我先后了 ...

  5. NC50454 A Simple Problem with Integers

    题目链接 题目 题目描述 给定数列 \(a[1],a[2], \dots,a[n]\) ,你需要依次进行q个操作,操作有两类: 1 l r x:给定l,r,x,对于所有 \(i \in[l,r]\) ...

  6. Sentinel 源码学习

    引入依赖 <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-co ...

  7. test-01-java 单元测试框架 junit 入门介绍

    拓展阅读 junit5 系列 基于 junit5 实现 junitperf 源码分析 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息 ...

  8. 识别主机名和IP地址

    文章来源:https://oracle-base.com/articles/misc/identifying-host-names-and-addresses Identifying Host Nam ...

  9. Java Socket编程系列(三)开发支持单客户端访问的Server

    例子来自Java官方教程,稍作调整. 实现的是单个客户端请求服务端,根据服务端提示进行一系列操作. 协议类: package com.dylan.socket; /** * @author xusuc ...

  10. java轻量级规则引擎easy-rules使用介绍

    我们在写业务代码经常遇到需要一大堆if/else,会导致代码可读性大大降低,有没有一种方法可以避免代码中出现大量的判断语句呢? 答案是用规则引擎,但是传统的规则引擎都比较重,比如开源的Drools,不 ...