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' οnclick='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用法整理相关推荐

  1. Google Guava 库用法整理

    http://macrochen.iteye.com/blog/737058 参考: http://codemunchies.com/2009/10/beautiful-code-with-googl ...

  2. python数据可视化工具 pandas_Pandas数据可视化工具——Seaborn用法整理(下)

    在前一篇文章 Pandas数据可视化工具--Seaborn用法整理(上),我们了解了如何使用这些Seaborn代码绘制分布图和分类图.在本文中,我们将继续讨论Seaborn提供的一些其他以绘制不同类型 ...

  3. 《编码规范和测试方法——C/C++版》作业 ·002——函数返回地址、static关键词用法整理

    文章目录 一.函数返回地址的情形 1.函数返回值为指针 二.static关键字用法整理 1.static全局变量 2.static局部变量 3.static函数 4.类的static成员数据 5.类的 ...

  4. Linux中find用法整理

    一.Linux中find常见用法示例 ·find    path    -option    [    -print ]    [ -exec    -ok    command ]    {} /; ...

  5. pandas 作图 统计_Pandas数据可视化工具——Seaborn用法整理(下)

    本科数学,编程几乎零基础(之前只学过matlab)今年年初开始学习Python数据挖掘,找到了一个很好的平台--BigQuant,省去了安装Python和安装各种库的烦恼.我最近在开始了解机器学习,B ...

  6. bitset 用法整理

    在项目中需要使用到10进制48位的数字按二进制由高到低解释,然后按每一位是0还是1来判断报警或错误状态. 所以,在Linux中的C++下需要用到二进制转换以及按位解析.收集到了一些资料,自己保存一下啊 ...

  7. rand函数用法整理

    rand函数用法整理 一.普通用法 1.1 生成随机数 rand()函数不需要参数,它将会返回0到RAND_MAX之间的任意的整数.如果我们想要生成一个在区间[0, 1]之内的数,那么我们可以写出如下 ...

  8. python Faker 包常用法整理

    关于python Faker包用法整理 基本用法 from faker import Faker # 导入第三方包 fake = Faker("zh_CN") # 实例化方法,这是 ...

  9. maya 常用命令用法整理

    MAYA常用命令用法整理 孤立模式 Shift + i -- 单独显示物体 Ctrl + h -- 隐藏该物体 Ctrl + Shift + h -- 显示上一个被隐藏的物体 /在Outliner / ...

最新文章

  1. ATS 4.2.3隐藏服务器名称及版本号的方法
  2. openfire 打包发布
  3. 【OO学习】OO第四单元作业总结及OO课程总结
  4. 资深数据产品经理陈家崑:如何从 0 到 1 构建埋点体系
  5. Extended Twin Composite Number
  6. Change Value to Reference(将值对象改为引用对象)
  7. 【2016年第6期】面向国际的生命组学大数据管理体系建设
  8. 如何将网站前端如何添加登录密码访问_如何在Mac上查找保存的密码的所有信息...
  9. python数据分析-为什么Python对大数据分析那么很重要?
  10. hive 建表java_hive创建表报错
  11. JavaScript通过style只能获取内联 状态的样式
  12. ROC曲线及AUC值
  13. 新曼联:弗格森制造 第七章 欧战惊喜 之4 安心之选:埃尔文
  14. 微信小程序: 摇色子
  15. 吉林大学高级程序设计(红皮书例题)(1~7章)
  16. i english怎么样,家长讲讲自己的经历!
  17. 【烈日炎炎战后端】SpringMVC(0.5万字)
  18. 智能灯杆网关有什么必备功能
  19. 企业寄快递软件就选快递管家,让员工和老板双满意的精细化服务
  20. 34个漂亮的应用程序后台管理系统界面(系列二)

热门文章

  1. 最实用的Modelsim初级使用教程
  2. Modelsim仿真使用教程
  3. 根因多维分析 | 一文看懂5大代表性算法的原理和优势
  4. 陌陌-pyspark
  5. C语言例题11:简单选择排序
  6. 深度强化学习:PPO + AI2THOR问题总结
  7. vue echarts使用map地图 引入china.js报错Cannot read property ‘echarts’ of undefined
  8. 【书影观后感 九】感受内心的真实 无问西东
  9. java 的图片BufferedImage方式缩小后有严重色差/严重偏红怎么办
  10. ArcGIS 从DEM 数据提取对应点的高程值