displaytag的使用方法(用于数据表格的显示和功能控制) tabledecorator实现链接按钮

来源:互联网 发布:模拟教学软件 编辑:程序博客网 时间:2024/06/01 09:00

displaytag的使用方法(用于数据表格的显示和功能控制)

关键字: displaytag的使用方法

displaytag的使用方法(用于数据表格的显示和功能控制)Displaytag1.1版本使用方法

一、  安装步骤

1.        下载displaytag-1.1-bin.zip后解压缩并将displaytag-examples-1.1.war中的WEB-INF/lib类包放入自己的web应用程序中的WEB-INF/lib目录下,并将WEB-INF/classes中的displaytag.properties放入到自己web应用程序中的WEB-INF/classes目录下。

 

2.        将displaytag-examples-1.1.war中的资源文件放置到与自己web应用程序同级的目录中,资源文件包括css,images,img三个文件夹下的所有内容。

二、  使用方法

1、得到要显示的数据源

有四种范围

   pageScope

   requestScope (默认)  <display:table name="test" >

   sessionScope  <display:table name="sessionScope.sessiontest" >注意,这里要指定范围   

  applicationScope同上

2、全部数据显示

<% request.setAttribute( "test", new TestList(20, false) ); %>

  <display:table name="test" ></display:table>

 标签将遍历List里的每一个对象,并将对象里的所有属性显示出来。

  name属性用来对应list对象的名称

3、部分数据显示

<% request.setAttribute( "test", new TestList(20, false) ); %>

  <display:table name="test" >

      <display:column property="id" title="ID"/>

         <display:column property="name" title="姓名" />

      <display:column property="email" title="电子邮件"/>

      <display:column property="url" title="网址"/>

         <display:column property="money" title="Money"/>

  </display:table>

  property对应List里对象的属性(用getXXX()方法取得),title则对应表格表头里的列名。

4、表格的样式定义

共有的表格样式为isis,its,mars,simple,report,mark五种,默认为isis

表格样式设定为mark后可以设定column的样式属性

<display:table name="test" class="isis" >

      <display:column property="id" title="ID"/>

         <display:column property="name" title="姓名"  />

      <display:column property="email" title="电子邮件" class="tableCellError"/>

      <display:column property="url" title="网址"/>

         <display:column property="money" title="Money"/>

  </display:table>

通过class属性来指定所要应用的样式。

 

5、数据的自动连接功能

如果显示的数据中包含emal和ur时,可以通过设定display:column里的autolink="true"来直接连接

<display:table name="test" >

      <display:column property="id" title="ID"/>

         <display:column property="name" title="姓名"  />

      <display:column property="email" title="电子邮件" autolink="true" />

      <display:column property="url" title="网址" autolink="true"/>

         <display:column property="money" title="Money"/>

  </display:table>

 

6、数据的排序

在需要排序的column里增加sortable="true"属性,headerClass="sortable"是指定显示的样式。

   defaultsort="1"    默认第一个column排序

   defaultorder="descending"    默认递减排序

<display:table name="test" 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>

 

7、数据的动态连接

实现数据的动态连接有两种方法。第一种为使用标签库的属性值来设置连接地址,这种方法实现的动态连接比较简单,只能实现类似xxx.jsp?id=1的连接样式。第二种方法为通过自定义一个Wrapper类继承TableDecorator来实现表格中动态连接的数据内容,这样就可以实现类似xxx.jsp?id=1&action=add的连接样式。

 

第一种动态连接使用方法:在<display:column/>里通过增加href、paramId、paramName、paramScope、paramProperty属性

      href             基本的URL地址

      paramId          加在URL地址后的参数名称

      paramName        数据bean的名称,一般为null(即使用当前List里的对象)

      paramScope       数据bean的范围,一般为null

      paramProperty    数据bean的属性名称,用来填充URL地址后的参数值

<display:table name="test">

      <display:column property="id" title="ID" href="details.jsp" paramId="id" />

      <display:column property="email" title="电子邮件"

href="details.jsp" paramId="action" />

      <display:column property="url" title="网址"

href="details.jsp" paramId="id" paramProperty="email"  />

</display:table>

第一列的连接地址为details.jsp?id=1

第二列的连接地址为details.jsp?action=ss@sfd.com

第三列的连接地址为details.jsp?id=ss@sfd.com

 

第二种动态连接使用方法:首先编写MyWrapper.java文件,代码如下

 

    import org.displaytag.decorator.TableDecorator;

import com.module.DateModule;   // DateModule为将来要在tag中进行显示的数据bean。

 

public class MyWrapper extends TableDecorator{

      

    public MyWrapper ()

    {

        super();

    }

   

    public String getLink2()

    {

        DateModule myModule = (DateModule) getCurrentRowObject();

        int id = DateModule.getId().intValue();

 

        return "<a href=\"details.jsp?id=" //$NON-NLS-1$

            + id

            + "&amp;action=view\">查看</a> | " //$NON-NLS-1$

            + "<a href=\"details.jsp?id=" //$NON-NLS-1$

            + id

            + "&amp;action=edit\">编辑</a> | " //$NON-NLS-1$

            + "<a href=\"details.jsp?id=" //$NON-NLS-1$

            + id

            + "&amp;action=delete\">删除</a>"; //$NON-NLS-1$

    }

}

 

  然后编写jsp页面,首先在页面中import一下自己定义的MyWrapper,在<display:table>中增加decorator=”MyWrapper”属性,在数据显示的列种添加

<display:column property="link2" title="Actions" />

 

//我在实际使用过程中发现,尽管我已经在jsp中导入了相应的自定义包,但是访问链接时还是提示找不到我那个类,最后只好在“decorator=”后面加上了完整包路径。

//另外,因为是对整个table进行装饰,所以会将你的数据里面的原有列都覆盖掉了,所以还要做进一步处理,比如在table标签中补上所有需要显示的列,其实,在未给table添加link列之前,按默认不需写什么就会自动显示所有列,但是用了装饰器之后就不显示,又要手动去补上,很是麻烦,不知道大家有没有好一点的办法,能省去这个因需要补上所有列的标签而带来的麻烦?

//还有,如果你想只对某列进行装饰,则应该选用对单独到列进行装饰(即实现ColumnDecorator接口),然后将此列添加到表格中。

三、     备注说明

此文档只列举了一些经常用到的表格显示例子,其他的功能暂没进行详细列举。

关于此标签的分页功能说明:此标签还有的功能包括实现对list的数据分页,但是由于对海量数据支持的不完善性暂不介绍,在进行分页的时候我们仍然用hibernate的分页方法实现分页,传递数据时只传递当前页的List对象数据。

关于样例程序的说明:在displaytag-examples-1.1.war中的例子基本上包含了所有displaytag所有能做到的效果显示。其中所有例子都是基于JSP XML syntax这种格式的页面文件编写的。当用普通的jsp页面进行测试时应该在文件顶部加入标签库信息<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>同时应当将标签库要用到的css样式导入到页面中

  <style type="text/css" media="all">

      @import url("css/maven-base.css");

      @import url("css/maven-theme.css");

      @import url("css/site.css");

      @import url("css/screen.css");

  </style>

0 0
原创粉丝点击