- 浏览: 2612706 次
- 性别:
- 来自: 小胖儿的大城
文章分类
最新评论
-
ni4wangba0:
ni4wangba0 写道亲测,算法有问题。对不起,其实是我自 ...
谈谈"求线段交点"的几种算法(js实现,完整版) -
ni4wangba0:
亲测,算法有问题。
谈谈"求线段交点"的几种算法(js实现,完整版) -
kers007:
苹果不让Webapp 在appstore 里发布,我不知道对 ...
苹果真的要在 AppStore 里封杀 WebApp 吗? -
striveandlive:
fins = js大牛
[原创]GT-Template, 一个超轻量级的js模板工具. -
AlwaysYang:
基础扎实的才能行走天下。
关于body的"大小"在ie和ff下的一些基础知识
ECSide入门
注:这个入门并不是最终版,在未来几天内,我会不停的对它进行编辑.回大连后,我会逐步向WIKI上迁移.这个只是一个临时的草稿.
ECSide是有一个基于jsp tag的开源列表组件.
简单的说,它就是一组可以帮助你快速实现强大的列表的jsp标签.
它的工作原理很简单.
您将要展现的列表的数据集合(Collection),放入request/pagecontext/session内(使用setAttribute方法.这个工作可以在action/servlet里完成,也可以在jsp页面内完成),然后页面跳转到使用ECSide标签的jsp页面,此时ECSide就可以帮助您展现出所需要的列表.
一个简单的流程通常是这样的.
1 客户端请求action/servlet(如 http://10.195.129.101/test/userlist.do)
2 action接受到请求后,调用相应的BO/dao,执行取列表数据的方法.
3 取得数据后(通常是一个vo/map的list),将数据放入request内(使用requset.setAttribute(key,value)方法.)
4 将请求forward到使用ECSide标签的jsp页面.
5 ECSide将展现出列表.
知道了原理,那么让我们一起来完成一个快速而简单的例子吧.
现在有一张用户信息表,如下
h2db的建表脚本如下:
对应VO:
对应DAO如下(假设DAO里只有一个方法,取得全部的用户信息,返回的是VO的List):
该简单例子假设该表数据量不大:500以内,采用ECSide的java内存分页技术(关于java内存分页和数据库层分页的说明请参见:...).
由于此例子实在简单,所以略去BO层.
action(DispatchActionSupport)代码如下:
访问该action的URL为
http://localhost:8080/ecsdemo/simpledemo.do?actionMethod=getAllUsers
jsp页面:
引入标签声明
通常jsp页面内取得应用上下文是必须的.
引入ECSide必要的css js
ECSide的标签,也是展现列表最关键的环节:
<ec:table> ECSide的主标签,可以理解为 html里的table标签
items指明列表集合在request的属性表里的键名, var指明迭代列表集合时,单条记录所用的变量名.此处类似jstl里的c:forEach标签.
retrieveRowsCallback="process" 指明采用ECSide的java内存分页技术(关于java内存分页和数据库层分页的的详细说明参见....).
action指明翻页排序等操作时,所要调用的action的url,在这里你可以继续使用展现列表所使用的action
title="用户列表" 列表的标题
width="100%" 列表的宽度
classic="true" 使用传统方式列表 (传统方式与ECSide方式区别的详细说明参见....)
<ec:row> 行标签,可以理解为类似html里的tr标签
<ec:column> 列标签,可以理解为类似html里的td标签
width列的宽度, 类似td的 width属性 (关于 ec:column 的 width属性的详细说明参见....)
property 该列所要显示的数据在VO中对应的属性字段的名字(如果每条数据是存放在VO里的话),或MAP里对应的key的名字(如果每条数据是存放在MAP里的话)
title 表头中该列所要显示的名称
value 该列所要显示的内容.当你要显示的内容默认不是VO/MAP里的值的时候,你才需要使用value属性,为该列手动的指定一个值.
${GLOBALROWCOUNT}为ECSide内置的一个特殊变量,表示的数据所在的行号,针对全部数据而言,${ROWCOUNT}是针对当前页面而言.
注:这个入门并不是最终版,在未来几天内,我会不停的对它进行编辑.回大连后,我会逐步向WIKI上迁移.这个只是一个临时的草稿.
ECSide是有一个基于jsp tag的开源列表组件.
简单的说,它就是一组可以帮助你快速实现强大的列表的jsp标签.
它的工作原理很简单.
您将要展现的列表的数据集合(Collection),放入request/pagecontext/session内(使用setAttribute方法.这个工作可以在action/servlet里完成,也可以在jsp页面内完成),然后页面跳转到使用ECSide标签的jsp页面,此时ECSide就可以帮助您展现出所需要的列表.
一个简单的流程通常是这样的.
1 客户端请求action/servlet(如 http://10.195.129.101/test/userlist.do)
2 action接受到请求后,调用相应的BO/dao,执行取列表数据的方法.
3 取得数据后(通常是一个vo/map的list),将数据放入request内(使用requset.setAttribute(key,value)方法.)
4 将请求forward到使用ECSide标签的jsp页面.
5 ECSide将展现出列表.
知道了原理,那么让我们一起来完成一个快速而简单的例子吧.
现在有一张用户信息表,如下
表名称: USER_INFO(用户信息表) 字段: USERID (用户编号) USERNAME (用户名) PASSWD (密码) USERROLE (角色) 0 被锁定 1 普通 2 高级 3 管理员 4超级管理员 REGDATE (注册日期) EMAIL (EMAIL) GENDER (性别) 0 未知 1 男 2女 MEMO (备注)
h2db的建表脚本如下:
create table USER_INFO ( USERID int not null identity, USERNAME varchar(80) not null, PASSWD varchar(255) not null, USERROLE varchar(10) default 1, REGDATE varchar(20) , EMAIL varchar(128) , GENDER varchar(2) default 0, MEMO varchar(1024) , constraint PK_USER_INFO primary key (USERID) );
对应VO:
public class UserInfo { private Integer userId; private String userName; private String passwd; private String userRole; private String regDate; private String email; private String gender; private String memo; /* 略去getter setter方法 */ }
对应DAO如下(假设DAO里只有一个方法,取得全部的用户信息,返回的是VO的List):
public class UserDAO extends BaseDAO { public List getAllUsers(){ StringBuffer bufSql = new StringBuffer("SELECT * FROM USER_INFO WHERE 1=1"); Connection conn=null; PreparedStatement pstmt = null; ResultSet rest = null; List allUsers=null; try { conn = getConnection(); pstmt = ConnectionUtils.prepareStatement(conn,bufSql.toString()); rest = pstmt.executeQuery(); allUsers=new ArrayList(); UserVO userVO=null; while (rest.next()) { userVO=new UserVO(); /* 略去将ResultSet结果放入VO的过程 */ allUsers.add(userVO); } } catch (Exception e) { allUsers=null; }finally{ close(rest, pstmt, conn); } return allUsers; } }
该简单例子假设该表数据量不大:500以内,采用ECSide的java内存分页技术(关于java内存分页和数据库层分页的说明请参见:...).
由于此例子实在简单,所以略去BO层.
action(DispatchActionSupport)代码如下:
public class MyTestAction extends DispatchAction { // java内存分页 public ActionForward getAllUsers(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // 取得DAO,这里是从spring上下文中取得指定DAO,略去spring相关代码 UserDAO userDAO=(UserDAO)getBean("userDAO"); List allUsers = userDAO.getAllUsers(); //将结果集合放入request内,记住键名"allUsers". request.setAttribute("allUsers", allUsers); //forward到列表展现页面 return mapping.findForward("userlistPage"); } }
访问该action的URL为
http://localhost:8080/ecsdemo/simpledemo.do?actionMethod=getAllUsers
jsp页面:
引入标签声明
<%@ taglib uri="http://www.ecside.org" prefix="ec" %>
通常jsp页面内取得应用上下文是必须的.
<% String webapp=request.getContextPath(); %>
引入ECSide必要的css js
<link rel="stylesheet" type="text/css" href="<%=webapp%>/common/css/ECSide_style.css" /> <script type="text/javascript" src="<%=webapp%>/common/js/prototype_mini.js" ></script> <script type="text/javascript" src="<%=webapp%>/common/js/ECSide.js" ></script>
ECSide的标签,也是展现列表最关键的环节:
<ec:table items="allUsers" var="user" retrieveRowsCallback="process" action="${pageContext.request.contextPath}/simpledemo.do?actionMethod=getAllUsers" title="用户列表" width="100%" classic="true" > <ec:row> <ec:column width="50" property="_0" title="序号" value="${GLOBALROWCOUNT}" /> <ec:column width="80" property="userRole" title="角色" /> <ec:column property="userName" title="用户名" /> <ec:column width="100" property="passwd" title="密码" /> <ec:column width="120" property="email" title="电子信箱" /> <ec:column width="70" property="gender" title="性别" /> </ec:row> </ec:table>
<ec:table> ECSide的主标签,可以理解为 html里的table标签
items指明列表集合在request的属性表里的键名, var指明迭代列表集合时,单条记录所用的变量名.此处类似jstl里的c:forEach标签.
retrieveRowsCallback="process" 指明采用ECSide的java内存分页技术(关于java内存分页和数据库层分页的的详细说明参见....).
action指明翻页排序等操作时,所要调用的action的url,在这里你可以继续使用展现列表所使用的action
title="用户列表" 列表的标题
width="100%" 列表的宽度
classic="true" 使用传统方式列表 (传统方式与ECSide方式区别的详细说明参见....)
<ec:row> 行标签,可以理解为类似html里的tr标签
<ec:column> 列标签,可以理解为类似html里的td标签
width列的宽度, 类似td的 width属性 (关于 ec:column 的 width属性的详细说明参见....)
property 该列所要显示的数据在VO中对应的属性字段的名字(如果每条数据是存放在VO里的话),或MAP里对应的key的名字(如果每条数据是存放在MAP里的话)
title 表头中该列所要显示的名称
value 该列所要显示的内容.当你要显示的内容默认不是VO/MAP里的值的时候,你才需要使用value属性,为该列手动的指定一个值.
${GLOBALROWCOUNT}为ECSide内置的一个特殊变量,表示的数据所在的行号,针对全部数据而言,${ROWCOUNT}是针对当前页面而言.
评论
22 楼
anranran
2008-11-20
我下了你了最新EC, filterOptions filterCell="droplist" 总是没有效果,能给个demo吗?
21 楼
guowei4634
2008-07-10
问个问题,我出现下面的情况为什么啊
2008-07-10 16:01:43 [org.ecside.table.callback.LimitCallback]-[WARN] You need to specify the totalRows (as an Integer) to use the org.ecside.table.callback.LimitCallback.
2008-07-10 16:01:43 [org.ecside.table.callback.LimitCallback]-[WARN] You need to specify the totalRows (as an Integer) to use the org.ecside.table.callback.LimitCallback.
20 楼
letian329
2007-09-13
19 楼
letian329
2007-09-13
18 楼
lizhy
2007-08-14
支持中
17 楼
jimever
2007-06-28
用ecside2不能翻页啊,提示什么不支持该属性和方法
16 楼
qddajian
2007-06-24
希望楼主早点弄个完整点的,大家好好的学一下.
15 楼
maku
2007-06-19
我将资源文件放在src下
java.util.MissingResourceException: Can't find bundle for base name ecsideResourceBundle_zh_CN.properties, locale zh_CN
14 楼
木剑先生
2007-05-20
,怎么解决?
13 楼
木剑先生
2007-05-20
fins:
,在项目里用了ECSIDE,查看浏览器源文件里能看到迭代的数据,可是页面里什么都没有,是白屏...
,在项目里用了ECSIDE,查看浏览器源文件里能看到迭代的数据,可是页面里什么都没有,是白屏...
12 楼
vkuang
2007-05-16
怎么好久都不更新了啊?
11 楼
ldlzp
2007-05-16
不错。
10 楼
jokeymzx
2007-05-15
支持楼主!
9 楼
coint
2007-05-09
顶!
一直在关注楼主的Ecside,
多谢楼主的辛勤劳动!
一直在关注楼主的Ecside,
多谢楼主的辛勤劳动!
8 楼
lonelyfatboy
2007-05-08
,顶!
7 楼
linginfanta
2007-05-08
楼主辛苦了,项目似乎没有建CVS库。
6 楼
greycat
2007-05-07
期待完整的手册,表示支持
5 楼
nbaertuo
2007-05-06
请假下AJAX和Extreme Table结合是怎么实现的?
4 楼
nbaertuo
2007-05-06
ding ding ding
3 楼
pipi2142001
2007-05-03
楼主辛苦了。五一还不忘为大家写入门教程,赞一个!
发表评论
-
那些成天说我的GT-Grid抄袭的人注意了
2009-03-19 22:01 10283你们能够在浩瀚的网络中找到 sigmawidgets htt ... -
[发布]GT-Grid 1.42 版 ★& "前后台结合示例"★2009-01-15更新
2009-01-15 02:41 27529=============================== ... -
[发布]GT-Grid 1.36 版 ★& "前后台结合示例"★2008-12-01 12AM 更新
2008-12-01 01:27 10472(最后更新时间 :12月1日 中午12点时, 修正了 1.36 ... -
GT-Grid 近期将会发布一个bug修正版本,然后将会进行较大的重构
2008-11-11 00:12 3882GT-Grid 近期将会发布一个bug修正版本, 主要修正上一 ... -
[发布]GT-Grid 1.25 版 ★& "前后台结合示例" ★2008-10-21 更新
2008-10-21 17:25 19775首先 先道个歉. 之前许诺过 10月20日之前发布,结果迟到了 ... -
对于复杂javabean到json串的转换,建议使用FlexJSON
2008-10-16 11:23 9925gt-grid自带的那个 javaBean与json的转换工具 ... -
[通知] GT-Grid 讨论群 变更
2008-10-10 15:54 3042GT-Grid的群建立至今, 用户早已满员, 每日还有很多申请 ... -
10月中旬支持导出excel和csv的gt-grid会推出
2008-10-04 21:19 269110月中旬支持导出excel和csv的gt-grid会推出 ( ... -
[发布]GT-Grid 1.18版 & "前后台结合示例"更新 ★2008-09-12发布
2008-09-12 16:40 12678这个版本带有 与java后台结合的示例. 单独的最新版本的 ... -
调查: 关于GT-Grid导致IE崩溃的问题
2008-09-09 15:39 4211有网友反应 对GT-Grid进行操作时 会导致IE崩溃. ... -
[发布] GT-Grid 1.15 版 (080908发布) ★
2008-09-08 14:10 4206GT-Grid 1.15版 说明文档. 这篇文档主要说明一些 ... -
[发布] GT-Grid 1.12 版 (080904发布) ★
2008-09-03 11:02 5472GT-Grid 1.12版 说明文档. 这篇文档主要说明一些 ... -
奥运结束, GT启航
2008-08-25 10:11 2893前一阵由于关注奥运 GT做的工作比较少 奥运结束了 GT该再 ... -
最近奥运,GT的开发暂停一段时间,抱歉了
2008-08-18 20:13 19518月8号之后 GT的更新速度缓慢了,我回答问题也没有以前及时了 ... -
[发布] GT-Grid 1.0 奥运版 (080808发布) ★ without doc
2008-08-08 17:17 19450由于文档工作滞后 导致我本来放弃了今天发布的念头 但是还是不忍 ... -
GT-Grid 1.0 基础教程(十二)
2008-08-05 02:06 17523GT-Grid 1.0 基础教程(十二) 教程说明: 这是一 ... -
GT-Grid 1.0 基础教程(十一)
2008-08-03 22:29 8229GT-Grid 1.0 基础教程(十一 ... -
GT-Grid 1.0 基础教程(十)
2008-08-03 00:52 16788GT-Grid 1.0 基础教程(十) 教程说明: 这是一个 ... -
GT-Grid 1.0 基础教程(九)
2008-07-28 00:43 15629GT-Grid 1.0 基础教程(九) 教程说明: 这是一个 ... -
我的两点请求, 麻烦关注GT和ecside的朋友看一下,谢谢了
2008-07-27 21:55 30091 恳请大家以后不要通 ...
相关推荐
关于IXA协议的网络草稿, draft-guy-iax-05, 2008年10月6号发布的.
根据所提供的文件内容,可以提炼出以下IT知识点: 1. ICCP协议(Inter-Chassis Communication Protocol):该协议是文档中提到的核心内容,它是一种用于实现PE(Provider Edge)设备冗余的协议,尤其适用于虚拟专用...
互联网草案 `draft-ietf-speechsc-mrcpv2-10` 描述了 MRCPv2(Media Resource Control Protocol Version 2)协议的基本框架、架构及其实现方式。此协议允许客户端主机控制网络上的媒体服务资源,如语音合成器、识别...
$ npm install @draft-js-plugins/editor --save 然后将编辑器导入代码中的某个位置,就可以开始了! import Editor from '@draft-js-plugins/editor' ; 文献资料 @ draft-js-plugins /编辑 编辑 接受插件的编辑器...
draft-js-autolist-plugin, 为facebook的Draft.js 编辑器自动创建无序/有序列表 Draft.js-自动列表插件这是一个插件插件,是一个插件系统,一个插件系统,位于 Draft.js.的顶部。这个插件增加了支持自动无序/有序...
草稿js选择图像插件在您的草稿js编辑器中嵌入本地图像这是draft-js-plugins-editor 。安装npm install @jimmycode/draft-js-select-image-plugin用法该插件显示了一个与侧面工具栏集成的按钮。 import ...
### 关于MPLS-TP OAM框架的关键知识点 #### 一、MPLS-TP简介与背景 Multi-Protocol Label Switching Transport Profile (MPLS-TP) 是一种基于包的传输技术,该技术建立在MPLS Traffic Engineering (MPLS-TE) 和 ...
HLS(HTTP Live Streaming)是一种由苹果公司提出的流媒体传输协议,目的是为了有效地传输无界多媒体数据流。通过HLS协议,可以将音频、视频和字幕等多媒体内容分割成小的数据包,再由服务器推送至客户端播放器进行...
JSON模式(应用程序/模式+ JSON)有几个目的,其中之一就是JSON实例验证。此文档指定JSON模式的词汇表,以描述JSON文档的含义,为使用JSON数据的用户界面提供提示,并对有效文档的外观做出断言。
### H265的网络抽象层RTP封装技术说明 #### 概述 本文档主要介绍了针对ITU-T H.265(也称为High Efficiency Video Coding, HEVC)视频编码标准的一种RTP(Real-time Transport Protocol)有效载荷格式。...
draft-js-prism, 使用Prism的DraftJS代码高亮 draft-js-prism draft-js-prism 是一个使用 Prism DraftJS到 Highlight 代码块的装饰器。注意:如果你感兴趣的是提供正确的代码块,那么它只装饰代码块,请查看 draft-...
【draft-huitema-quic-ts-07】文档描述了一种用于QUIC协议的单向时延测量草案,旨在通过 TIMESTAMP 帧提供更精确的网络延迟信息,以优化丢包检测和拥塞控制策略。QUIC(Quick UDP Internet Connections)是一种在UDP...
《PyPI官网下载:draft_sport-0.0.6-py3-none-any.whl——探索Python库的安装与使用》 在Python编程环境中,PyPI(Python Package Index)是官方的第三方软件包仓库,提供了丰富的Python库供开发者下载和使用。本篇...
标题中的“draft-iab-rfc4441rev-04”指的是互联网草案(Internet-Draft)的编号,其中包含“iab”指代的是互联网架构委员会(Internet Architecture Board),而“rfc4441rev-04”则代表该草案是对RFC 4441文档的...
《HEVC官方标准draft10 JCTVC-L1003_v9》是2013年1月发布的HEVC(高效视频编码)的最新英文标准文档,由Joint Collaborative Team on Video Coding(JCT-VC)联合制定,涵盖了ITU-T SG 16 WP 3和ISO/IEC JTC 1/SC 29...
标题与描述均引用了“draft-ietf-ips-iscsi-mib-09”,这实际上是一份由互联网工程任务组(IETF)发布的草案文档,旨在定义管理对象以支持网络管理协议在基于TCP/IP的互联网中的应用。特别地,这份文档聚焦于iSCSI...
用法 import createSingleLinePlugin from 'draft-js-single-line-plugin'const singleLinePlugin = createSingleLinePlugin ( ) 然后可以将其传递到draft-js-plugins-editor组件中: import createSingleLinePlugin...
标题中的"anapdinizm-Draft-archive-refs-heads-master.zip"似乎是一个Git仓库的归档文件,通常用于备份或分享代码库。这个文件名包含了一些Git特定的术语,如"Draft"可能指的是未完成的工作,"archive"通常表示存储...
npm i --save draft-js-markdown-plugin 用法 import React , { Component } from 'react' ; import Editor from 'draft-js-plugins-editor' ; import createMarkdownPlugin from 'draft-js-markdown-plugin' ; ...