`
张洪财
  • 浏览: 275970 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Displaytag用法整理

阅读更多

Displaytag用法整理一

 

1、 Displaytag提供的默认的系统提示均为英文,有两种方法进行汉化:

 

1)、将displaytag-1.1.1.jar中自带的org/display/properties/displaytag.properties 文件拷贝到项目的classes目录下

用java提供的native2ascii工具将文件进行汉化,汉化后的内容重新保存为displaytag.properties文件

2)、将jar包中的displaytag.properties汉化后替换jar包中原来的文件


2、 <display:column property="email" /> //property指定了列表中包含的bean(actionForm或vo)中包含的属性的名称,大小写必须一致

<display:column title="email">email@it.com</display:column> //列表中指定任意的列,不包含在bean中,比如显示按钮、图片等


3、 先来给出第一个具体的例子(实现列包装:显示一列checkbox,点击标题栏的checkbox完成全选):

<display:column style="width:5%;text-align:center"

headerClass="dataHead" property="columnId"

title="<input type='checkbox' name='checkall' value='all' onclick='checkAll();' />" decorator="ainx.asiainfo.common.displaytag.CheckboxColumnWrapper" />

从该例可以看出:

1)、title属性定义了一个checkbox,点击后执行javascript函数checkAll()完成对checkbox的全选,该checkbox显示在该列的标题栏中

2)、headerClass属性指定了标题栏的css样式,dataHead是已经在css文件中定义了的

3)、property属性指定该列将要显示bean中的哪个变量的内容,大小写必须与bean中的定义一致

4)、各行都用了一个decorator将数据进行了包装,由ainx.asiainfo.common.displaytag.CheckboxColumnWrapper类实现了对该列数据的包装,该类具体内容如下:

package ainx.asiainfo.common.displaytag;

import javax.servlet.jsp.PageContext;

import org.displaytag.decorator.DisplaytagColumnDecorator;

import org.displaytag.exception.DecoratorException;

import org.displaytag.properties.MediaTypeEnum;


/**

* 用于丰富displaytag列显示的功能,在表格中显示一列checkbox

* @author lvping

*/

public class CheckboxColumnWrapper implements DisplaytagColumnDecorator {

/**

* 该列全部显示为checkbox,其value为该列带有的ID

*/

public Object decorate(Object arg0, PageContext arg1, MediaTypeEnum arg2) throws DecoratorException {

//arg0表示被包装的该列定义的property属性给定的值

//arg1表示pagecontext

//arg2表示……

String elementid = (String) arg0;

return "<input name=\"selected\" type=\"checkbox\" value=\""+elementid+"\" />";

//同理如果对于该列要显示为一个图片,可以返回”<input type=’image’ src=’…’ />”

}

}


4、 再给出第二个例子(前台分页+排序+分组功能):

<display:table class="data" cellpadding="0" sort="list" requestURI="/NetXpert/room/idcRoomAreaAction.do?actionType=doListIdcArea" pagesize="20" cellspacing="0" style="width:98%" name="areas">

<display:column property="roomname" sortable="true" group="1" title="所在机房"/>

</display:table>

从该例看出:

1)、table中的name属性指定了该表格的数据来自request的attribute中名称为"areas"的数据(即action中必须有如下的代码:

ArrayList alAreas = ……; //此处获取将要在列表中显示的数据

request.setAttribute("areas",alAreas);)

1)、table中的pagesize设定了表格中每页显示的记录个数

2)、table中的requestURI属性定义了每次分页时需要提交的请求

3)、table中的sort属性设为list,表示点击表中某列排序时可对整个表格排序

(Use 'page' if you want to sort only visible records, or 'list' if you want to sort the full list, or 'external' if the data is sorted outside displaytag)

4)、sortable属性设为true,则表示对该列支持排序(前台排序),显示出的该列的标题上会自动带有下划线,点击可排序

5)、group属性的设置表示对该列的数据自动分组,设为1表示该列数据为显示出的第一个分组

Displaytag用法整理二


1、 再给第三个例子(后台数据库分页)

<display:table class="data" cellpadding="0"

requestURI="/NetXpert/room/idcRoomShelfAction.do?actionType=doListIdcShelf" cellspacing="0" style="width:98%" name="shelfs" >

…… ……

</display:table>

从该例中可看出:

1)、table只设置了requestURI属性,没有设置pagesize属性,由requestURI指定的url来完成分页功能

2)、IdcRoomShelfAction.java中的相关函数的代码(红色部分的代码完成了分页):

public ActionForward doListIdcShelf(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) {

int page = 1; // 默认值:第1页

PaginatedListHelper paginaredList = new PaginatedListHelper();

// 获取页号

if (request.getParameter("page") != null

&& !"".equals(request.getParameter("page"))) {

page = Integer.parseInt(request.getParameter("page"));

}

paginaredList.setObjectsPerPage(20); // 默认每页显示15条记录,可以重新赋值

paginaredList.setPageNumber(page); // 设置页号

ArrayList voList = new IdcRoomShelfBo().selectShelf();

ArrayList formList = ((IdcRoomShelfForm) form)

.getFormListFromVOList(voList);


paginaredList.setFullListSize(formList.size()); // 记录总数

paginaredList.setList(formList); // 全部的数据集

paginaredList.getCurrentPageRecord(); // 获取当前页号需要的数据集


request.setAttribute("shelfs", paginaredList);

return mapping.findForward("shelfList");

}

3)、分页类的代码:(display1.1的发布已经能够支持后台数据库分页,但必须实现其提供的PaginatedList接口)

package com.asiainfo.idc.room.util;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

//PaginatedList和SortOrderEnum为displaytag-1.1.1.jar提供的jar包中提供的类

import org.displaytag.pagination.PaginatedList;

import org.displaytag.properties.SortOrderEnum;


/**

* 针对displaytag标签扩展的后台分页功能

* @author lvping

*/

public class PaginatedListHelper implements PaginatedList {

private List list; // 数据集

private int pageNumber = 1;// 页号

private int objectsPerPage = 15;// 每页显示的记录数

private int fullListSize = 0;// 全部记录数

private String sortCriterion;

private SortOrderEnum sortDirection;

private String searchId;

public List getList() {

return list;

}

public void setList(List list) {

this.list = list;

}

public int getPageNumber() {

return pageNumber;

}

public void setPageNumber(int pageNumber) {

this.pageNumber = pageNumber;

}

public int getObjectsPerPage() {

return objectsPerPage;

}

public void setObjectsPerPage(int objectsPerPage) {

this.objectsPerPage = objectsPerPage;

}

public int getFullListSize() {

return fullListSize;

}

public void setFullListSize(int fullListSize) {

this.fullListSize = fullListSize;

}

public String getSortCriterion() {

return sortCriterion;

}

public void setSortCriterion(String sortCriterion) {

this.sortCriterion = sortCriterion;

}

public SortOrderEnum getSortDirection() {

return sortDirection;

}

public void setSortDirection(SortOrderEnum sortDirection) {

this.sortDirection = sortDirection;

}

public String getSearchId() {

return searchId;

}

public void setSearchId(String searchId) {

this.searchId = searchId;

}


/**

* 根据总的数据集和每页需要的首记录、尾记录索引,从总记录集中得到需要的记录集

* 这是一个取巧的分页方法,并非真正的根据每页请求拼sql进行查询,而是对于整个数据查询的结果从中取各页需要的数据集合,对于超大数据量的查询效率可能不会太高

*/

public void getCurrentPageRecord() {

ArrayList v = new ArrayList();

Iterator iterator = null;

try {

if (this.getList() != null) {

iterator = this.getList().iterator();

int i = 0;

int fromRow = 0;

int toRow = 0;

if (this.getPageNumber() == 1) { // 首页

fromRow = 1; // 从第一行开始

toRow = this.getObjectsPerPage();

} else {

fromRow = (this.getPageNumber() - 1)

* this.getObjectsPerPage() + 1;

toRow = fromRow + this.getObjectsPerPage();

}


if (toRow > this.getFullListSize()) // 如果尾行数超过list的大小

toRow = this.getFullListSize();


while (iterator.hasNext()) {

i++;

if (i < fromRow) {

iterator.next();

continue;

} else if (i > toRow) {

iterator.next();

continue;

} else {

v.add(iterator.next());

}

}

this.setList(v);

}

} catch (Exception ex) {

ex.printStackTrace();

}

}

}

Displaytag用法整理三


1、 再来一个(列中的超链接):

<display:column style="width:10%;text-align:center"

headerClass="dataHead" property="shelfcode"

href="/NetXpert/room/idcRoomShelfAction.do?actionType=doEditIdcShelf&" paramId="shelfid" paramProperty="shelfid" title="机柜编码" />

从该例中看到:

1)、列的href属性定义了点击超链接后请求的url

2)、列的paramId属性定义了url后面带有的参数的名称

3)、列的paramProperty属性定义了url给出的参数值

4)、根据该列的定义,点击该列数据的超链接后,会跳转至如下的url:

/NetXpert/room/idcRoomShelfAction.do?actionType=doEditIdcShelf&shelfid=XXX (XXX为property属性指定的bean中的shelfcode的值)

分享到:
评论

相关推荐

    displaytag的使用方法

    在本文中,我们将详细讨论 Displaytag 1.1 版本的使用方法。 **一、Displaytag 安装** 首先,你需要从官方或者其他可靠的来源下载 `displaytag-1.1-bin.zip` 文件。解压后,将 `displaytag-examples-1.1.war` 中的...

    displaytag及使用方法

    以下是一些常见的DisplayTag使用方法: 1. **显示表格**: 使用`&lt;display:table&gt;`标签来创建表格,通过`name`属性指定数据源(通常是一个List或者一个JavaBean集合),例如: ```jsp ``` `export`属性设置为...

    DisplayTag分页资料整理.chm

    个人学习收集网上资料辛苦整理而成. DisplayTag分页资料整理.chm DisplayTag 分页 chm java taglib

    自己整理的DisplayTag标签的使用

    为了在项目中使用DisplayTag,首先需要下载并引用其提供的`DisplayTag.jar`文件,以及依赖的Apache项目相关jar包。此外,还需要在`web.xml`中进行相应的标签库配置,具体如下: ```xml &lt;taglib-uri&gt;...

    DisplayTag应用

    DisplayTag 的基础用法是在 JSP 页面中使用 `&lt;display:table&gt;` 标签来渲染一个表格。例如,以下代码会显示一个包含对象属性的列表: ```jsp ("test", new ReportList(6));%&gt; ``` 这段代码将遍历 `test` 属性中的每...

    displaytag详细用法(中文问题已解决)

    2. **标签库**:DisplayTag基于JSTL标签库,可以在JSP页面中使用,例如`&lt;display:table&gt;`、`&lt;display:column&gt;`等,这些标签提供了丰富的属性来定制表格的行为。 3. **中文问题**:在处理中文字符时,DisplayTag可能...

    displaytag-1.1.1标签库及其使用方法.rar

    在本篇中,我们将深入探讨DisplayTag 1.1.1的核心功能和使用方法。 首先,DisplayTag的安装非常简单。通常,只需将displaytag-1.1.1.jar文件添加到项目的类路径中,并在web.xml中配置相应的过滤器和监听器。这一...

    displaytag的使用指南(全)

    本文将详细介绍 DisplayTag 的安装步骤、基本使用方法、样式定制以及高级特性。 #### 二、安装与配置 ##### 安装步骤: 1. **下载并解压**:首先从官网或第三方仓库下载 `displaytag-1.1-bin.zip` 文件,解压缩后...

    displayTag的使用方法

    ### DisplayTag插件的使用方法详解 #### 一、引言 在Web开发过程中,特别是使用Java技术栈进行开发时,经常会遇到需要展示大量数据的情况,例如用户列表、订单列表等。为了更方便地实现这样的功能,开发者通常会...

    displaytag-1.1 源码

    6. `displaytag-doc`: 这里可能包含Displaytag的用户手册、API文档或者开发者指南,对于学习和使用Displaytag非常重要,因为它提供了详细的使用方法和最佳实践。 7. `displaytag`: 最后,这个目录很可能包含了...

    displaytag简明使用示例

    下面我们将详细探讨DisplayTag的使用方法。 1. **基础使用** 最简单的使用方式是不使用`&lt;display:column/&gt;`标签。只需将List对象赋值给request,然后在页面上使用`&lt;display:table name="test" /&gt;`标签,DisplayTag...

    displaytag标签使用

    最基本的使用方式是在JSP页面中设置`&lt;display:table&gt;`标签,将一个集合对象(如List)赋值给`name`属性,DisplayTag会自动遍历集合中的每个对象,显示其所有公共getter方法对应的属性。例如: ```jsp ( "test", ...

    DisplayTag标签使用说明

    DisplayTag 的基本用法是通过`&lt;display:table&gt;`标签来展示数据列表。例如,当你有一个名为`test`的列表,你可以直接使用该标签来显示列表中的所有对象属性: ```jsp ("test", new ReportList(6));%&gt; ``` 这将遍历...

    displayTag1.2

    - `examples`目录:可能有示例项目,展示了DisplayTag的使用方法。 通过使用DisplayTag 1.2,开发人员可以更专注于业务逻辑,而不用花费大量时间在表格展示的细节上,从而提高了开发效率和代码的可维护性。同时,...

    displaytag标签的使用

    在配置方面,DisplayTag 使用了两个标签库:displaytag-1.1.tld 和 fmt.tld。displaytag-1.1.tld 是 DisplayTag 自身的标签,而 fmt.tld 标签库主要用于支持中文显示。如果你的项目使用的是 Servlet 2.4 之前的版本...

    displaytag-1.2.jar

    displaytag-1.2.jar 显示标签

    displaytag-1.2-bin&displaytag-1.2-src Java分页组件/插件

    描述中提到的"技术指导文档"是DisplayTag的用户指南,它详细阐述了如何在项目中集成DisplayTag,以及如何配置和使用其特性。通过这个文档,开发者可以了解到如何创建表格、设置分页参数、实现列排序等操作。"点击...

Global site tag (gtag.js) - Google Analytics