说到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的使用:
- <jm:tableid="product"items="products"caption="productlisting">
- <jm:columnproperty="name"sortable="true"filterable="true"/>
- <jm:columnproperty="price"/>
- <jm:columnproperty="createdTime"/>
- <jm:columnproperty="id"title="edit">
- <ahref="viewProduct.action?id=<jm:property/>"><jm:propertyname="name"/></a>
- </jm:column>
- </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的使用方法有下面几种:
- <jm:columnproperty="name"/>
将仅仅输出对象中Name属性值.列名是Name
- <jm:columnproperty="name"title="名字"sortable="true"filterable="false"/>
这样可以得到自定义的列名,可以让列可查找,可排序,当然你Server端需要相应提供排序及查找功能.不过就算你不提供,客户端也会把当前结果排序和查找的.
- <jm:columnproperty="id"title="edit">
- <ahref="viewProduct.action?id=<jm:property/>"><jm:propertyname="name"/></a>
- </jm:column>
这里结合了PropertyTag.实现自定义列显示.可以灵活定制自己的单元格.
在ColumnTag里面,使用PropertyTag的时候,可以指定Name属性,如果不指定则使用当前Column的Property属性值.
以后将支持:
- <jm:columnproperty="id"title="edit">
- <ahref="viewProduct.action?id=${id}">${name}</a>
- </jm:column>
本文介绍了JMesa,一种用于提供高效表格展示API的工具。它是ExtremeTable的替代品,提供了更多的灵活性、易扩展性和易用性。文章通过TagLib演示了如何使用JMesa创建表格,包括Table、Column和Property等标签的属性及其用法。
167

被折叠的 条评论
为什么被折叠?



