像一颗晨土

常用链接

统计

blogs

life

最新评论

介绍ExtremeTable的下一代Jmesa

说到ExtremeTable(以下简称ET,呃,,,ET.....),可以说不知道的人甚少.不过估计用的也未必多罢了.今天,给大家介绍一个由ET的作者重新实现的一套关于Table的API.JMesa.
我是一个偶然的机会知道Jmesa,我在做一个数据展现系统的时候想寻找ET的帮忙,但发现ET己不再更新,作者把精力转移到了新的项目中,也就是这个 JMesa.这个项目的目的是为开发者提供更有效的表格展现的API,而不是简单的TagLib.无论从灵活性,易扩展性,易用性,均比ET上了一个层 次.最近Release的版本里面,并不包括TagLib.而在下一个版本(2.1.0)将会加入TagLib,目前TagLib己经可用,在SVN里已 有.只是等待下一个版本的发布,其间会有一些更新,不过会兼容目前的TagLib的.
假如我从API开始介绍JMesa,恐怕并不是个好的办法,像我以前的文章里面有介绍,结果反响不大.这次决定从TagLib入手,来给大家介绍一下Jmesa.
大家可以从附件里拿到一个Demo.注意Demo依赖JMesa以及其他Lib.在Lib文件夹下有详细说明.
现在来看看JMesa的使用:
  1. <jm:table id="product" items="products" caption="product listing">  
  2.     <jm:column property="name" sortable="true" filterable="true"/>  
  3.     <jm:column property="price" />  
  4.     <jm:column property="createdTime" />  
  5.     <jm:column property="id" title="edit">  
  6.         <a href="viewProduct.action?id="<jm:property/>"><jm:property name="name"/></a>  
  7.     </jm:column>  
  8. </jm:table>  

估计比较容易看得懂的代码吧.
Jmesa 的检签规范当中只有三个Tag:Table,Row,Column.而当前的TagLib实现中只实现了Table和Column两个(Row是可选 的).另加一个Property的Tag.此阶段,Property的Tag是很有用的,其起到的作用与Webwork的PropertyTag相差无 几, 用来获得对象的某个属性.之所以使用Property Tag是因为当前的TagLib有个限制就是暂时不支持如JSTL的${}这种写法.将来会支持,届时Property Tag也会继续获得兼容.Jeff比较倾向于使用迭代的方式实现Tag,那样可以支持${}这样的写法.不过作为TagLib的开始,问题不大.有时间再 重构一下TagLib,支持JSTL的写法.
好了,来说一说这些Tag的使用方法:
Table:
Attribute Description
id 表格的ID(必须)
items 对象或者Map的集合 (必须)
caption 表格的标题
theme 表格的主题,自定义样式
exportTypes 使用逗号分割导出的类型,目前支持导出类型有CSV,Excel
width 表格宽度
style 即表格的Style属性
styleClass 使用的Css的Class名字
border 表格宽
cellpadding 表格属性
cellspacing 表格属性
实际上,真正Release的版本里面将会加上var以及Limit属性.
var属性值即在Column标签里可以获得的对象变量.
Limit属性是保存在当前请求的Limit的对象名.
Row:
Attribute Description
highlighter 是否高亮显示
onclick 点击事件
onmouseout 鼠标移出事件
onmouseover 鼠标移入事件
该Tag是可选的.实际上Jmesa提供了一系列默认的事件响应,有必要的情况下才使用.
Column:
Attribute Description
property Java对象或Map的属性名
title 列的名称
filterable 是否可按过滤条件查找
sortable 是否要排序
width 列宽
style Style属性
styleClass 使用的Css的Class的名字
ColumnTag的使用方法有下面几种:
  1. <jm:column property="name"/>  

将仅仅输出对象中Name属性值.列名是Name
  1. <jm:column property="name" title="名字" sortable="true" filterable="false"/>  

这样可以得到自定义的列名,可以让列可查找,可排序,当然你Server端需要相应提供排序及查找功能.不过就算你不提供,客户端也会把当前结果排序和查找的.
  1. <jm:column property="id" title="edit">   
  2.     <a href="viewProduct.action?id="<jm:property/>"><jm:property name="name"/></a>   
  3. </jm:column>    

这里结合了PropertyTag.实现自定义列显示.可以灵活定制自己的单元格.
在ColumnTag里面,使用PropertyTag的时候,可以指定Name属性,如果不指定则使用当前Column的Property属性值.
以后将支持:
  1. <jm:column property="id" title="edit">   
  2.     <a href="viewProduct.action?id=${id}">${name}</a>   
  3. </jm:column>    
这样的写法.当然会继续兼容PropertyTag,尽管不是Tag规范里的东西.

相信经过上面的一番介绍,大家对Jmesa有一定的感性认识了吧.还没有?下载Demo,扔进Tomcat 的App里跑一下就明白了.
有什么建议,请一定要告诉我 :).

附件在:http://www.javaeye.com/topics/download/4eaaa38d-e838-459d-aef2-3be6c4d043df

posted on 2007-08-01 01:31 艾尘 阅读(7184) 评论(11)  编辑  收藏 所属分类: pick up

评论

# re: 介绍ExtremeTable的下一代Jmesa 2007-08-01 09:15 aaa

可以编辑单元格吗  回复  更多评论   

# re: 介绍ExtremeTable的下一代Jmesa 2007-08-01 09:20 dreamstone

不错,可以试试。  回复  更多评论   

# re: 介绍ExtremeTable的下一代Jmesa[未登录] 2007-08-01 10:40 小天

不能跑耶,我用tomcat5.0.28 , jdk1.5去跑,是不行的,出現如下訊息
「javax.servlet.ServletException: Bad version number in .class file
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:244)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


不知是否還有其它人 跟我一樣  回复  更多评论   

# re: 介绍ExtremeTable的下一代Jmesa 2007-08-01 15:15 LeeYue_0530@hotmail.com

比Display tag 略强一点,但是原理还是一样的,对打数据量的分页,还是没有现成的处理机制。还是需要手工实现。  回复  更多评论   

# re: 介绍ExtremeTable的下一代Jmesa[未登录] 2007-08-01 15:53 jeff

只要不是逻辑分页。不管是什么,总得自己在Server端分页的。
楼上说的不需要手工实现分页,是否有理想的代码模型可以看看?  回复  更多评论   

# re: 介绍ExtremeTable的下一代Jmesa 2007-08-02 10:23 Tin

ExtremeTable很早就实现自定义分页实现了,可以自己处理分页逻辑,和Display Tag的基于集合的不同呀。Jmesa既然是下一代应该也支持吧。
Jeff Johnston这个人非常聪明勤奋,它的项目一般都是非常活跃的,以后一定会越来越好。  回复  更多评论   

# re: 介绍ExtremeTable的下一代Jmesa 2007-10-19 01:23 nap

最近一直在用extremetable 1.0.1,后来出了个1.0.3,但发现好象要jdk1.5,公司一直jdk1.4.2就放弃了。
在google中搜extremetable的时候把我带到了jmesa,新的这个应该也是1.5的吧?
曾经本机跑了一下,印象中extremetable原来文本框的过滤控件感觉很好用,结果jmesa好象换成下拉的什么东西了,点着点着偶尔好象失灵了,可能是bug。记不清了。反正jmesa印象一般啊。
现在在想办法把extremetable 1.0.1用好!某些地方还有疑惑。以后留言再请教楼主吧。
喜欢归喜欢,但担心还是有的,这个项目是一个人维护的,作者万一中途留下一个还有bug的release就忙别的工作去了,会给公司项目带来某些小风险吧,我又不牛,发现bug也不知道怎么改,那样就郁闷死了。哈哈。  回复  更多评论   

# re: 介绍ExtremeTable的下一代Jmesa 2007-12-24 10:12 jwd456

@小天
我的你的情况一样!  回复  更多评论   

# re: 介绍ExtremeTable的下一代Jmesa 2008-05-06 08:39 彭勇

我在使用过程中出现以下错误.请帮忙看哈
0 [http-8080-Processor2] DEBUG org.jmesa.limit.LimitActionFactoryImpl - Defaulting to Page 1
63 [http-8080-Processor2] DEBUG org.jmesa.core.ItemsImpl - org.jmesa.limit.LimitImpl@ecd92c[id=accountList,export=<null>,rowSelect=org.jmesa.limit.RowSelectImpl@fccada[page=1,maxRows=15,rowEnd=15,rowStart=0,totalRows=132],filterSet=org.jmesa.limit.FilterSetImpl@69ed4a[],sortSet=org.jmesa.limit.SortSetImpl@59cbda[]]
78 [http-8080-Processor2] ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/Demo].[debugjsp] - Servlet.service() for servlet debugjsp threw exception
  回复  更多评论   

# re: 介绍ExtremeTable的下一代Jmesa 2008-05-06 08:41 彭勇

请帮忙解释哈
mesa:tableFacade id="accountList" items="${Accounts}" var="bean"

id代表是什么
items代表是什么
var代表是什么
能否解释详细点!!
小弟不胜感激。
  回复  更多评论   

# re: 介绍ExtremeTable的下一代Jmesa 2009-08-01 15:21 zeus

Jmesa的首页是什么?  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: