EC Side介绍:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
作者: fins ( name: Wei Zijun  ,  email:fins@163.com  , blog:http://fins.javaeye.com  )

EC Side是一个开源的列表组件。
他源自著名开源列表组件 eXtremeComponents (http://www.extremecomponents.org),
但现在已经脱离eXtremeComponents,独立发展(仍有大量代码来自 eXtremeComponents)。
“做最实用易用的列表组件”是ECSide最终的目标。

ECSide发布地址:
1.25 版 :    http://fins.javaeye.com/blog/58216 
1.1 final版: http://fins.javaeye.com/blog/54265 
1.1 RC1版:   http://fins.javaeye.com/blog/51068
1.0 RC1版:   http://fins.javaeye.com/blog/40190
ECSide圈子: 
http://ecside.javaeye.com/
ECSide综合讨论专用帖:
http://fins.javaeye.com/blog/48723 



============================
EC SIDE CHANGELOG
============================
http://ecside.javaeye.org

===============================
2007-03-13
ECSide 1.25 发布
===============================
距离上一个版本,发布已经整整过去一个月了,也是放出新版本的时候了。
这么久没有更新原因有2:1是我最近确实太忙了,2是ECSIDE的发展遇到了一些瓶颈。呵呵
不过好在现在新版本终于可以拿出来了。
新功能主要有:
1 增加了escape功能,有了他就可以在一定程度上避免因数据中有特殊字符而带来的麻烦了。
用法:
<ec:column property="aaa" >#_ESCAPE: 你的文本asda1231#[ESC_HTML:${user.USERNAME}]另外一些文本</ec:column>
<ec:column .... value="#_ESCAPE:#[ESC_HTML:${user.USERNAME}]" />

#[ESC_HTML: .... ] 中间的部分是要ESCAPE的 ,有三种方式:ESC_HTML  ESC_XML  ESC_JS。
可以联合使用,但不能嵌套使用。
例如:  #_ESCAPE: asdasd #[ESC_HTML:qqqqqqqqq]另外一些文本 #[ESC_JS:qqqqqqqqq]

如果要ESCAPE的字符中有] 那么请使用 #~ESC_HTML: .... ~ 形式
如果要ESCAPE的字符中有~ 那么请使用 #^ESC_HTML: .... ^ 形式

2 支持打开一个shadowRow时候,关闭其他的shadowRow功能
如果不想使用这个功能,可以在js里设置
ecsideObj为 js初始化的ecside对象。
ecsideObj.autoCloseOtherShadowRow=false;

3 刷新列表的时候,同时刷新当前打开的shadowRow,并且保持打开状态.

4 为ajax翻页 排序 刷新操作增加了 后置js回调。
可以通过指定
ecsdieObj.afterFillForm=函数名
作为回调,例如:
function testC(){
alert(123)
}
ecsdieObj.afterFillForm=testC;

则在执行ajax翻页 排序 刷新操作后,将调用alert(123).
该回调会传入 ajax的response对象.


5 代码做了细节调整,修正了一些缺陷和bug.

6 完善了示例,例如加入了 增加记录的演示,在action中提供了 数据库分页 和非数据库分页两种方法。
非数据库分页 请在  ec:table 内加入  retrieveRowsCallback="process" 属性

7 还有针对论坛中的很多朋友提出的建议和bug,做出了一些细节修改
在这里谢谢大家了。



即使不使用新特性,也强烈建议您升级,因为这一个月下来 1.1版还是暴露了很多的问题。



===============================
2007-02-13
ECSide 1.1 final 发布
===============================
1 展现层代码重写,页面内部的结构进行了调整。
2 表格内部滚动条的js全部重写,提高了性能,改善了对百分比宽度的支持。
3 ec:table增加属性 listWidth,用来指定列表实际宽度(可选项)
(width用来指定显示宽度)
增加属性 hieght用来指定列表显示高度
(之前的版本使用 listHeight,此次全部改为height,但是listHeight还会保留一段时间)
4 增加编组功能。<ec:column group="hide"...
这个只是一个初步的实现,会在以后版本里加强。
5 新增加EasyDataExport特性。
该特性是EasyDataAccess的一个衍生物,也是通过配置来实现导出。
见OPOA的例子。
有一点要主义,它是在DAO层导出,这样可以支持较大的数据量。
6 完善了ECSideFilter过滤器 修正了导出下载时的一个小bug(bug虽小,耗时不少)。
7 一些代码调整和bug修改。



===============================
2007-02-07
ECSide 1.1 RC4 发布
===============================
1 新增加了一个 ec:mapping 标签,作用和ec:column的mappingItem类似,
但是可以脱离ectable单独使用。
2 完善了EcSideFilter过滤器。
3 重构了 easyList和 easyDataAccess相关代码
关于easyList和 easyDataAccess特性,
请参看Help_EasyDataAccess.txt以及easylist的教学录象还有示例。
4 一些细节的调整和bug的修改。
其中的一些bug还是比较严重(虽然出现几率很低)的,强烈建议更新。
在1.2版本之前,功能上基本不会有大变化了。
ECSide 1.1 final的主要改进也将集中在 bug修改 和 js、java代码重构上。

(详见 CHANGELOG.txt)



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
主要增强的功能:
1 可设置工具条位置(上 下 或 不显示)
2 可设置工具条内容(显示哪些 不显示哪些)
3 可设置工具条上各个功能按钮的相对位置
4 增加了调整页大小的选择框,并可自定义选择框内的内容
5 增加了带有邻近页面的导航条
6 增加了可跳转到指定页面的跳转框
7 增加了当前选中行高亮
8 为ec:table 增加了 excludeParameters 和 includeParameters 属性,可以实现更快捷简便的“参数保留/不保留”功能
9 可添加自定义的html代码到工具条内 或其他位置
10 可手动调整列宽,可通过js调整列表高度
11 增加了“列表内部滚动条”(实现列表头固定,列表体滚动的功能)
12 为ec:row和ec:column 添加更多的html事件支持,现支持:onmouserover onmouserout onclick ondbclick
13 为ec:table ec:row ec:column增加了自定义扩展属性功能
14 增加 ec:extendrow 标签,实现列表扩展行的功能
15 增加shadowRow(影子行)功能:每行下面可以再加一个子行 这个行里显示什么可以由大家自己定义
16 增加页面变量 ${TOTALROWCOUNT} 用来标示当前纪录在全部记录中的行数
17 增加了打印功能(尚不完善)
18 ec:column属性增加 ellipsis ,实现单元格内数据过长的时候 自动截短并加"..."的功能(ie only)
19 实现了跨列的列表头
20 统计栏的标题格可跨列
21 增加了若干种cell 和 headerCell,例如checkbox radiobox
22 取消了imagePath属性,样式相关的图片信息全部提入css内
23 重(第4声)用了js 和css ,很多功能用js来实现
24 支持了ajax翻页 (可设置 客户端 还是 服务端进行 html代码剪裁 )
25 支持预查询功能,在察看第n页的时候,把n+1页的数据也查询出来(隐藏着)备用,加快查看下一页的速度
26 将导出excel所使用的组件由poi切换成了 jxl
27 xls导出方式修改 原始的导出是导出的vo/map里的原始数值 现在是导出页面实际显示的内容
28 增加简捷导出方式 (通过ec:table的 xlsFileName pdfFileName csvFileName属性)
29 支持pdf简体中文导出。
30 代码进行了大规模的重构
31 增加了很多ajax相关特性
32 实现了可编辑列表功能
33 实现了cell的映射功能
34 easyList、easyDataAccess、easyDataExport特性:可通过简单的配制,快速实现列表数据的展现、查询、修改、删除、导出。
35 支持复杂表头的自定义与导出。
36 支持横向统计。
37 可以对列表内容进行灵活多样的escape。
... ...
  • ecside_full_1.25_20070314.zip (740.9 KB)
  • 描述: 该附件包含全部ecside源代码,以及示例代码,但并不包含依赖的jar包。依赖的jar包可以去ecside圈子里下载,或者按照该附件内的\WEB-INF\lib下的filelist.txt文件里记录的jar包自行下载。 (3月14重新上传)
  • 下载次数: 1741
评论
leexhwhy 2007-03-20   回复
好的,我试试,万分感谢!
fins 2007-03-20   回复
看我编辑后的 上上楼的回复
leexhwhy 2007-03-20   回复
fins 写道
我测试了一下
确实是 org.apache.commons.beanutils.PropertyUtils 的问题

我们一起等待他修正吧

或者你改一下那个变量的名字吧
现在也只能这样了

不幸的是我把名字改成别的名字如fApplication也不行,现在只好用我自己写的方法获得属性了,为了项目需要。
另外,我对次列表进行排序,排序列表显示不出来,跟踪进去发现TotalRows=0
我改了几处地方,
1:org.extremecomponents.table.callback LimitCallback.retrieveRows()方法
增加以下判断
if (totalRows == null || totalRows.toString().trim().equalsIgnoreCase("0")) {
            totalRows = (Integer) RetrievalUtils.retrieve(model.getContext(), TableConstants.TOTAL_ROWS);
        }
2:org.extremecomponents.table.callback ProcessRowsCallback.增加了一个BeanComparator的内部类,在compare方法中利用自己的去属性方法
这样暂时可以解决此问题了,不知道改的有什么后遗症,谢谢。
fins 2007-03-20   回复
我测试了一下
确实是 org.apache.commons.beanutils.PropertyUtils 的问题

我们一起等待他修正吧

或者你改一下那个变量的名字吧
现在也只能这样了

其实你的 vo(bean pojo dto) 反正就是那个值对象 代码不用改

你可以把ecside里对他的使用方式变一下

例如

<ec:column property="fYiJieLun" ...

改为

<ec:column property="FYiJieLun" ...

把第一个字母变大写 这样就可以了
这绝对是PropertyUtils的bug
leexhwhy 2007-03-20   回复

fins 写道:

leexhwhy 写道:
报告一个BUG吧,我的bean有一个属性名为:bApplicant,get/set方法也都有,但是在列表中无法获得此属性的值,其他属性可以。
跟踪进去,发现org.ecside.core.TableModelUtils的

 public static Object getColumnPropertyValue(Object bean, String property) {
        Object result = null;
       
        try {
         
        if (ExtremeUtils.isBeanPropertyReadable(bean, property)) {
                result = PropertyUtils.getProperty(bean, property);

            }
            else{
               System.out.println(" ********unread property=="+property);
            }
        } catch (Exception e) {
            if (logger.isDebugEnabled()) {
                logger.debug("Could not find the property [" + property + "]. Either the bean or property is null");
            }
        }
此属性是不可读的,自己写了反射方法类是可以取到值的。不知道什么问题。

 

 

报什么错呢?

 不可能只是取不到数值吧? 应该是会报异常的吧?

具体是什么异常能否提供一下 谢谢

却是不报错误,呵呵,我在

ExtremeUtils.isBeanPropertyReadable方法中加入调试语句:输出结果如下:

属性名:[_0] 是否可读:[false]

属性名:[deptName] 是否可读:[true]

属性名:[wenHao] 是否可读:[true]

属性名:[anJuanName] 是否可读:[true]

属性名:[bApplicant] 是否可读:[false]

属性名:[applicant] 是否可读:[true]

属性名:[fYiJieLun] 是否可读:[false]

属性名:[undertaker] 是否可读:[true]

属性名:[liAnTime] 是否可读:[true]

属性名:[jieAnTime] 是否可读:[true]

属性名:[addTime] 是否可读:[true]

属性名:[_1] 是否可读:[false]
执行org.apache.commons.beanutils.PropertyUtils的方法时,只是返回false,不报异常,但是就是bApplicant和fYiJieLun属性不可读,换作我自己写的取属性的方法就可以获得值。有可能是PropertyUtils的BUG。

dargoner 2007-03-20   回复
在圈子文件共享里有的下的
dargoner 2007-03-20   回复
在圈子里下的到的 共享文件里
Arden 2007-03-20   回复
ecside的依赖第三方包的jar文件有没有统一的下载的地方,这么多第三方包自己去找好麻烦!
fins 2007-03-19   回复

leexhwhy 写道:
报告一个BUG吧,我的bean有一个属性名为:bApplicant,get/set方法也都有,但是在列表中无法获得此属性的值,其他属性可以。
跟踪进去,发现org.ecside.core.TableModelUtils的

 public static Object getColumnPropertyValue(Object bean, String property) {
        Object result = null;
       
        try {
         
        if (ExtremeUtils.isBeanPropertyReadable(bean, property)) {
                result = PropertyUtils.getProperty(bean, property);

            }
            else{
               System.out.println(" ********unread property=="+property);
            }
        } catch (Exception e) {
            if (logger.isDebugEnabled()) {
                logger.debug("Could not find the property [" + property + "]. Either the bean or property is null");
            }
        }
此属性是不可读的,自己写了反射方法类是可以取到值的。不知道什么问题。

 

 

报什么错呢?

 不可能只是取不到数值吧? 应该是会报异常的吧?

具体是什么异常能否提供一下 谢谢



fins 2007-03-19   回复
zhujinhua 写道
fins大哥,想问你几个问题!
1.ECSide是否有日期控件!
2.ECSide在Update的时候,当表单里做了修改,rs[i].getAttribute("edited")=="true" ,当update结束后,好象标识没有该成False.


1 暂时没有,我们项目中使用的是第3方的日期控件.
2 谢谢提醒 尽快修正
fins 2007-03-19   回复
你指的是一个打好的war包吗??
以后会提供的
再我解决好全部的应用服务器兼容性、编码兼容性等问题的时候
dargoner 2007-03-19   回复
感觉有点乱
dargoner 2007-03-19   回复
怎么也不给个部署包呢,那起码也给个 Ant build 啥
leexhwhy 2007-03-19   回复
报告一个BUG吧,我的bean有一个属性名为:bApplicant,get/set方法也都有,但是在列表中无法获得此属性的值,其他属性可以。
跟踪进去,发现org.ecside.core.TableModelUtils的

 public static Object getColumnPropertyValue(Object bean, String property) {
        Object result = null;
       
        try {
         
        if (ExtremeUtils.isBeanPropertyReadable(bean, property)) {
                result = PropertyUtils.getProperty(bean, property);

            }
            else{
               System.out.println(" ********unread property=="+property);
            }
        } catch (Exception e) {
            if (logger.isDebugEnabled()) {
                logger.debug("Could not find the property [" + property + "]. Either the bean or property is null");
            }
        }
此属性是不可读的,自己写了反射方法类是可以取到值的。不知道什么问题。
zhujinhua 2007-03-19   回复
fins大哥,想问你几个问题!
1.ECSide是否有日期控件!
2.ECSide在Update的时候,当表单里做了修改,rs[i].getAttribute("edited")=="true" ,当update结束后,好象标识没有该成False.
pragmatic 2007-03-17   回复
fins 能不能在表中增加右键功能呀,右键中可以自定义一些功能,例如增、删、改、查、刷新等一些基本功能
fins 2007-03-16   回复
1 支持
2 暂时不支持
pragmatic 2007-03-16   回复
fins感谢你这么快的回答,可能有些问题我没有描述清楚,不好意思,
1.我说的多表头是指复杂表头而不是说一行一列表头,是那种有多行多列的复杂表头
2.我说的固定是指,比如说第一列固定的话,拖左右滚动条的时候,第一列数据列不动,其它列的数据动
fins 2007-03-15   回复
首先谢谢您的支持与鼓励


拖拉你指的是交换位置那种吗?也不支持啊
固定指的是什么呢??
上千应该是支持的 至少我做个8列3000条
但是有点慢 其实这时候对客户端机器要求比较高

关于性能 速度 与 记录条数的关系 没有一个可计算的公式
只能靠不停的实验了 而且这些与客户端也是有很大关系的
pragmatic 2007-03-15   回复
fins 感谢你为大家提供这么好的列表控件
从demo中我就觉你对此列表控件花了很多时间扩展了许多功能,由于各种原因一直没有使用,我想问问你几个问题,希望你在百忙之中告诉我一下,我想问的是:

1.ECSide支持不支持多表头的拖拉和固定
2.ECSide能否支持列的固定,比如我要左边第一列固定就固定,要一,二固定就固定,只需设定一下参数即可
3.ECSide展现数据时,如果上千条数据在同一页显示的话,会不会给性能带来影响
4.ECSide的排序功能在数据达到上千条后,会不会在速度上造成很大影响

不好意思,因为对ECSide不熟悉,可能上面的有些问题问的很肤浅。敬请答复,谢谢!
发表评论

该博客是同时发布到论坛的,无法评论在论坛已被锁定的帖子

fins
搜索本博客
我的相册
12858fc6-2dd0-3d3b-b266-c47ee45d5fdf-thumb
IMG_2781
共 86 张
我的留言簿
  • 你好 麻烦请问一下 我想用struts做下载功能  但传过去的参数最后 ...
    -- by doing19852810
  • hide/show 切换似乎有问题
    -- by ellie4c
  • 小胖好,试用一下新功能,给你留个言,呵呵
    -- by Quake Wang
其他分类
存档
最新评论