`

[2007-3-13 发布]ECSide 1.25 :列表组件eXtremeComponents全面增强版!

阅读更多
EC Side介绍:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
作者: fins ( name: Wei Zijun  ,  email:fins@163.com  , blog:http://fins.iteye.com  )

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

ECSide发布地址:
1.25 版 :    http://fins.iteye.com/blog/58216 
1.1 final版: http://fins.iteye.com/blog/54265 
1.1 RC1版:   http://fins.iteye.com/blog/51068
1.0 RC1版:   http://fins.iteye.com/blog/40190
ECSide圈子: 
http://ecside.iteye.com/
ECSide综合讨论专用帖:
http://fins.iteye.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重新上传)
  • 下载次数: 2840
分享到:
评论
56 楼 DefallDevil 2012-03-01  
看了介绍,功能挺全的,准备用用看,顶楼主
55 楼 dongfred 2011-10-19  
太感谢了,只是在配置的时候发现乱码,后看源码才发现filter里多写了request.setCharacterEncoding("GBK");还放到if后边执行
54 楼 leexhwhy 2007-03-20  
好的,我试试,万分感谢!
53 楼 fins 2007-03-20  
看我编辑后的 上上楼的回复
52 楼 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方法中利用自己的去属性方法
这样暂时可以解决此问题了,不知道改的有什么后遗症,谢谢。
51 楼 fins 2007-03-20  
我测试了一下
确实是 org.apache.commons.beanutils.PropertyUtils 的问题

我们一起等待他修正吧

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

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

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

例如

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

改为

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

把第一个字母变大写 这样就可以了
这绝对是PropertyUtils的bug
50 楼 leexhwhy 2007-03-20  
<br/>
<strong>fins 写道:</strong><br/>
<div class='quote_div'><br/>
<strong>leexhwhy 写道:</strong><br/>
<div class='quote_div'>报告一个BUG吧,我的bean有一个属性名为:bApplicant,get/set方法也都有,但是在列表中无法获得此属性的值,其他属性可以。<br/>
跟踪进去,发现org.ecside.core.TableModelUtils的<br/>
<br/>
 public static Object getColumnPropertyValue(Object bean, String property) {<br/>
        Object result = null;<br/>
        <br/>
        try {<br/>
          <br/>
        if (ExtremeUtils.isBeanPropertyReadable(bean, property)) {<br/>
                result = PropertyUtils.getProperty(bean, property);<br/>
<br/>
            }<br/>
            else{<br/>
               System.out.println(" ********unread property=="+property);<br/>
            }<br/>
        } catch (Exception e) {<br/>
            if (logger.isDebugEnabled()) {<br/>
                logger.debug("Could not find the property [" + property + "]. Either the bean or property is null");<br/>
            }<br/>
        }<br/>
此属性是不可读的,自己写了反射方法类是可以取到值的。不知道什么问题。</div>
<p> </p>
<p> </p>
<p>报什么错呢?</p>
<p> 不可能只是取不到数值吧? 应该是会报异常的吧?</p>
<p>具体是什么异常能否提供一下 谢谢</p>
<p>却是不报错误,呵呵,我在</p>
<p>ExtremeUtils.isBeanPropertyReadable方法中加入调试语句:输出结果如下:</p>
<p>属性名:[_0] 是否可读:[false]<br/>
<br/>
属性名:[deptName] 是否可读:[true]<br/>
<br/>
属性名:[wenHao] 是否可读:[true]<br/>
<br/>
属性名:[anJuanName] 是否可读:[true]<br/>
<br/>
属性名:[bApplicant] 是否可读:[false]<br/>
<br/>
属性名:[applicant] 是否可读:[true]<br/>
<br/>
属性名:[fYiJieLun] 是否可读:[false]<br/>
<br/>
属性名:[undertaker] 是否可读:[true]<br/>
<br/>
属性名:[liAnTime] 是否可读:[true]<br/>
<br/>
属性名:[jieAnTime] 是否可读:[true]<br/>
<br/>
属性名:[addTime] 是否可读:[true]<br/>
<br/>
属性名:[_1] 是否可读:[false]<br/>
执行org.apache.commons.beanutils.PropertyUtils的方法时,只是返回false,不报异常,但是就是bApplicant和fYiJieLun属性不可读,换作我自己写的取属性的方法就可以获得值。有可能是PropertyUtils的BUG。</p>
</div>
49 楼 dargoner 2007-03-20  
在圈子文件共享里有的下的
48 楼 dargoner 2007-03-20  
在圈子里下的到的 共享文件里
47 楼 Arden 2007-03-20  
ecside的依赖第三方包的jar文件有没有统一的下载的地方,这么多第三方包自己去找好麻烦!
46 楼 fins 2007-03-19  
<br/>
<strong>leexhwhy 写道:</strong><br/>
<div class='quote_div'>报告一个BUG吧,我的bean有一个属性名为:bApplicant,get/set方法也都有,但是在列表中无法获得此属性的值,其他属性可以。<br/>
跟踪进去,发现org.ecside.core.TableModelUtils的<br/>
<br/>
 public static Object getColumnPropertyValue(Object bean, String property) {<br/>
        Object result = null;<br/>
        <br/>
        try {<br/>
          <br/>
        if (ExtremeUtils.isBeanPropertyReadable(bean, property)) {<br/>
                result = PropertyUtils.getProperty(bean, property);<br/>
<br/>
            }<br/>
            else{<br/>
               System.out.println(" ********unread property=="+property);<br/>
            }<br/>
        } catch (Exception e) {<br/>
            if (logger.isDebugEnabled()) {<br/>
                logger.debug("Could not find the property [" + property + "]. Either the bean or property is null");<br/>
            }<br/>
        }<br/>
此属性是不可读的,自己写了反射方法类是可以取到值的。不知道什么问题。</div>
<p> </p>
<p> </p>
<p>报什么错呢?</p>
<p> 不可能只是取不到数值吧? 应该是会报异常的吧?</p>
<p>具体是什么异常能否提供一下 谢谢<br/>
<br/>
<br/>
<br/>
</p>
45 楼 fins 2007-03-19  
zhujinhua 写道
fins大哥,想问你几个问题!
1.ECSide是否有日期控件!
2.ECSide在Update的时候,当表单里做了修改,rs[i].getAttribute("edited")=="true" ,当update结束后,好象标识没有该成False.


1 暂时没有,我们项目中使用的是第3方的日期控件.
2 谢谢提醒 尽快修正
44 楼 fins 2007-03-19  
你指的是一个打好的war包吗??
以后会提供的
再我解决好全部的应用服务器兼容性、编码兼容性等问题的时候
43 楼 dargoner 2007-03-19  
感觉有点乱
42 楼 dargoner 2007-03-19  
怎么也不给个部署包呢,那起码也给个 Ant build 啥
41 楼 leexhwhy 2007-03-19  
报告一个BUG吧,我的bean有一个属性名为:bApplicant,get/set方法也都有,但是在列表中无法获得此属性的值,其他属性可以。<br/>
跟踪进去,发现org.ecside.core.TableModelUtils的<br/>
<br/>
 public static Object getColumnPropertyValue(Object bean, String property) {<br/>
        Object result = null;<br/>
        <br/>
        try {<br/>
          <br/>
        if (ExtremeUtils.isBeanPropertyReadable(bean, property)) {<br/>
                result = PropertyUtils.getProperty(bean, property);<br/>
<br/>
            }<br/>
            else{<br/>
               System.out.println(" ********unread property=="+property);<br/>
            }<br/>
        } catch (Exception e) {<br/>
            if (logger.isDebugEnabled()) {<br/>
                logger.debug("Could not find the property [" + property + "]. Either the bean or property is null");<br/>
            }<br/>
        }<br/>
此属性是不可读的,自己写了反射方法类是可以取到值的。不知道什么问题。
40 楼 zhujinhua 2007-03-19  
fins大哥,想问你几个问题!
1.ECSide是否有日期控件!
2.ECSide在Update的时候,当表单里做了修改,rs[i].getAttribute("edited")=="true" ,当update结束后,好象标识没有该成False.
39 楼 pragmatic 2007-03-17  
fins 能不能在表中增加右键功能呀,右键中可以自定义一些功能,例如增、删、改、查、刷新等一些基本功能
38 楼 fins 2007-03-16  
1 支持
2 暂时不支持
37 楼 pragmatic 2007-03-16  
fins感谢你这么快的回答,可能有些问题我没有描述清楚,不好意思,
1.我说的多表头是指复杂表头而不是说一行一列表头,是那种有多行多列的复杂表头
2.我说的固定是指,比如说第一列固定的话,拖左右滚动条的时候,第一列数据列不动,其它列的数据动

相关推荐

Global site tag (gtag.js) - Google Analytics