- 浏览: 1146920 次
- 性别:
- 来自: 火星郊区
博客专栏
-
OSGi
浏览量:0
文章分类
- 全部博客 (695)
- 项目管理 (48)
- OSGi (122)
- java (79)
- Vaadin (5)
- RAP (47)
- mysql (40)
- Maven (22)
- SVN (8)
- 孔雀鱼 (10)
- hibernate (9)
- spring (10)
- css (3)
- 年审 (6)
- ant (1)
- jdbc (3)
- FusionCharts (2)
- struts (4)
- 决策分析 (2)
- 生活 (10)
- 架构设计 (5)
- 破解 (2)
- 狼文化 (4)
- JVM (14)
- J2EE (1)
- 应用服务器 (1)
- 我的链接 (5)
- 数学 (2)
- 报表 (1)
- 百科 (6)
- Flex (7)
- log4j (2)
- PHP (1)
- 系统 (2)
- Web前端 (7)
- linux (6)
- Office (1)
- 安全管理 (5)
- python (2)
- dom4j (1)
- 工作流 (3)
- 养生保健 (4)
- Eclipse (8)
- 监控开发 (1)
- 设计 (3)
- CAS (1)
- ZK (41)
- BluePrint (3)
- 工具 (1)
- SWT (7)
- google (2)
- NIO (1)
- 企业文化 (2)
- Windoes (0)
- RCP (7)
- JavaScript (10)
- UML (1)
- 产品经理 (2)
- Velocity (10)
- C (1)
- 单元测试 (1)
- 设计模式 (2)
- 系统分析师 (2)
- 架构 (4)
- 面试 (2)
- 代码走查 (1)
- MongoDB (1)
- 企业流程优化 (1)
- 模式 (1)
- EJB (1)
- Jetty (1)
- Git (13)
- IPV6 (1)
- JQuery (8)
- SSH (1)
- mybatis (10)
- SiteMesh (2)
- JSTL (1)
- veloctiy (1)
- Spring MVC (1)
- struts2 (3)
- Servlet (1)
- 权限管理 (1)
- Java Mina (1)
- java 系统信息 (6)
- OSGi 基础 (3)
- html (1)
- spring--security (6)
- HTML5 (1)
- java爬虫搜索 (1)
- mvc (3)
最新评论
-
Tom.X:
http://osgia.com/
将web容器置于OSGi框架下进行web应用的开发 -
chenyuguxing:
你好, 为什么我的bundle export到felix工程中 ...
在Apache Felix中运行bundle -
string2020:
<niceManifest>true</ni ...
Bundle Plugin for Maven -
jsonmong:
OSGI,是未来的主流,目前已相当成熟。应用OSGI比较好的, ...
基于OSGi的声明式服务 -
zyhui98:
貌似是翻译过来的,有很少人在linux上做开发吧
如何成为“10倍效率”开发者
简介 :
关于数据绑定:数据绑定是一种机制,在UI组件和数据源之间自动完成数据复制。应用开发人员只需告诉绑定管理器UI组件和数据的联系。然后数据绑定期会自动完成加载(将数据加载到UI)并保存(UI保存到数据源)
关于zk的注解:zk中的注解不同于java中的注解,zk注解有两种形式,
1,基于标签的 如<a:bind value="person.address.city"/>,仅用于页面
2,类似el表达式,只是el表达式里用$而zk注解使用与java中的注解符号@相同
如 <label value="@{indexWin$composer.totalScore}"> 仅用于页面。
zk注解功能比较单一不能执行类似el中的${1+1}功能,仅可以用于对象图浏览解析显示,
当然zk注解提供converter属性可以对显示或保存的数据类型进行转换,这个是el表达是没有的
zk注解与数据绑定紧密联系一起的,但数据绑定不一定使用注解的方式!
开发环境:
1,zk5.0.7.1
2,jdk1.6
3,eclipse3.6
下面我们从一个例子讨论一下基于注解的一般开发流程:
一, 数据绑定的一般流程
二,创建UI页面
UI页面的创建并不一定要放在第一步,因开发团队或个人考虑的是数据还是原型设计而异。
1,让eclipse识别zul结尾的文件:
与jsp、aspx类似,zk也创建自己的标签,这个标签集,
zk给它起了一个名字叫ZUML(zk用户界面标记语言),
zuml语言基于xml,符合xml语法规范。
我们根据zuml的规范书写的文件,通常以*.zul扩展结尾,
但eclipse不识别该文件。识别该文件有什么好处呢?语法着亮、自动提示、标签自动完成、验证文档的正确性
下面介绍如何让eclipse识别zul扩展文件:
eclipse菜单->window -> Preferences ->General ->Content Types -> Text -> xml ->
下部扩展列表右侧 点击Add -> 输入*.zul保存
2,创建zul文件
- <? xml version = "1.0" ?>
- < window id = "indexWin" apply = "com.sun4love.zk4love.web.controller.IndexController"
- xmlns:w = "client" xmlns:n = "native" xmlns = "http://www.zkoss.org/2005/zul"
- xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation = "http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul/zul.xsd" >
- < grid model = "@{indexWin$composer.users}" > <!-- 注意$前半部分与apply类当前元素的id相同 -->
- < rows >
- < row self = "@{each=user}" value = "@{user}" > <!-- self=@{each=user}表示将each变量名修改为user -->
- < label value = "@{user.name}" > </ label >
- < combobox readonly = "true" selectedItem = "@{user.score}"
- forward = "onChange=onReCalculate" > <!-- 将onChange事件转发给onReCalculate -->
- < comboitem label = "0分" value = "${0}" > </ comboitem >
- <!-- 因为value的值zul页面直接写0的话,zk把他作为String类型,此处用一个小技巧,设置value为数字类型 -->
- < comboitem label = "1分" value = "${1}" > </ comboitem >
- < comboitem label = "2分" value = "${2}" > </ comboitem >
- < comboitem label = "3分" value = "${3}" > </ comboitem >
- </ combobox >
- </ row >
- </ rows >
- < foot >
- < footer >
- </ footer >
- < footer >
- 总得分:
- < label value = "@{indexWin$composer.totalScore}" > </ label > <!-- 与IndexController类的getTotalScore对应 -->
- </ footer >
- </ foot >
- </ grid >
- </ window >
注意要点:
1)声明window组件,设置id为indexWin并apply(use与apply的区别 ) IndexController类,
另外还声明定义了client 与native 命名空间。 有几点非常重要,window的id、use与apply的区别、
以及apply常用的几个composer
2)grid的绑定数据模型,model="@{indexWin$composer.users}">,
这里的model器类似swing中的model,是一个数据容器,model的值会根据@{}
注解解释后的结果自动封装为如下不同的model,
BindingGroupsListModel、
BindingListModelArray、
BindingListModelList、
BindingListModelMap、
BindingListModelSet
GroupsListModel
然后分析注解@{}内的表达式,该表达式与el表达式里的对象图浏览完全一样, 没任何区别!
解析过程:在作用域内查找indexWin$composer对象,①然后在indexWin$composer
查找getUsers方法,
特殊情况:如果indexWin$composer.user.address.name中的name为null
或根本没有getName方法或address为空时会发生什么呢?解释过程会重复步骤①
a)无getName方法时,显示效果如下
看到类似Address@ec9441 的东西,应该知道这是直接显示对象地址了!
结合Address@ec9441出现的位置,我们应该会很快找出错误!
b)name为null或address为null时:都会得到正确的结果,这里不再解释
3)indexWin$composer名字很奇怪,从哪里来?
在2,1)中我们知道window的id为indexWin,indexWin$composer中$前半部分为组件的id ,
window是component,如果window替换成<div id="someCompId">,
此时indexWin$composer就变成了someCompId$composer, 那么$composer是什么?
$composer是一个固定格式, 由apply的IndexController设置的,关于IndexController的详细内容
将在下文介绍。indexWin$composer表示IndexController的实例对象,由zk自动创建。
获得更多bean的控制 apply bean与spring的整合 ,在此抛砖引玉
4)注解中重命名each变量
<!-- self=@{each=user}表示将each变量名修改为user -->
<row self="@{each=user}" value="@{user}">
5) UI到Object bean的自动保存
传统web开发中,例如注册用户,需要很多繁琐的步骤:提交表单,服务器端request.getParameter()
获取表单属性,并创建bean对象, 将表单值封装为bean对象,但request.getParameter()
获取值的仅为字符串,并且bean通常又是一个由多类型组成的状态对象,因此我们还要写一堆的
类型转换代码。在zk中,UI到bean对象和bean对象到UI的数据类型转换即封转都是自动完成的,
当然zk数据绑定器并不是万能的,zk提供了一个接口,由开发人员实现,但大部分我们无需
自定义转换器!
看看下面这张图,"懒程序员" 们开始头疼了,但zk已经很简单的转换成你需要的对象!
下面我们通过一个测试,看看zk的数据绑定器做了什么
测试:改变下拉别表,看是否调用score的setter方法,如果调用,zk注解自动保存了选择的值到
user的score属性上
- < combobox readonly = "true" selectedItem = "@{user.score}"
- forward = "onChange=onReCalculate" > <!-- 将onChange事件转发给onReCalculate -->
- < comboitem label = "0分" value = "${0}" > </ comboitem >
- <!-- 因为value的值zul页面直接写0的话,zk把他作为String类型,此处用一个小技巧,设置value为数字类型 -->
- < comboitem label = "1分" value = "${1}" > </ comboitem >
- < comboitem label = "2分" value = "${2}" > </ comboitem >
- < comboitem label = "3分" value = "${3}" > </ comboitem >
- </ combobox >
测试过程如图:
6) 事件转发
下面这段的意思是将combobox的onChange事件转发给某个组件的onReCalculate事件
onReCalculate是谁的事件呢?zk开发中关于forward属性的那点事 这篇文章详细讲解了forward
的用法。
<combobox forward="onChange=onReCalculate">
发表评论
-
ZK PPT
2012-02-27 17:28 1197附件中为ZK系列的PPT -
zk+spring+hibernate延迟加载的解决办法
2012-02-24 14:22 1264由于Zk 的AU request,lazy load现在没 ... -
【zk开发】zk注解的秘密
2012-02-24 14:23 1584The DataBinder that reads ZUML ... -
【zk开发】zkstudio安装及使用视屏
2012-02-26 12:04 1234安装视屏 http://docs.zkoss.org/w ... -
zk主题生成器
2012-02-26 12:04 1614生成器在附件内,兼容zk3.x 与zk5.x,zktheme ... -
zk服务器端获取鼠标点击位置
2012-02-26 12:04 1387index.zul Xml代码 ... -
zk Fiddle-zk在线测试保存代码分享平台
2012-02-23 08:20 1461http://zkfiddle.org/ 是zk项目组之一 ... -
zksample2-一个复杂应用的zk示例
2012-02-23 08:19 1475Zks ample2 is a demo applica ... -
zk5.0.8发布
2012-02-23 08:18 950该版本是一个维护版本,主要于bug修复及引入几个新特性 ... -
zk EE/PE/CE的区别
2012-02-18 09:32 3094自从zk5.0以后,zk拆分为 ... -
ZK 5.0.8 新特性
2012-02-18 09:32 18878月16日,zk官网:zk5.0.8将要发布 zk5. ... -
zk client与server code结合提高长操作的响应性
2012-02-18 09:32 1426一,关于长操作与响应性 zk client与serve ... -
zk tooltiptext中换行
2012-02-17 11:37 1531Xml代码 <window ti ... -
zk下载文件中文乱码解决方案
2012-02-17 11:37 3663本文来自http://sun4love.iteye.com/b ... -
【zk视频】如何了解一个组件默认支持服务器端事件
2012-02-17 11:37 1301如何了解一个组件默认支持服务器端事件? 知识点:在z ... -
【zk视频】如何查看zk源码,了解zk原理
2012-02-17 11:37 1644当org.zkoss.zul.Window关闭时,zk是如 ... -
ZK 5.0.7发布,及新特性
2012-02-15 09:10 1143ZK 是一套以 AJAX/XUL/Java 为基础的网页应用 ... -
use【组件公共属性】
2012-02-15 09:09 1081语法 apply="a-class- ... -
zk异步请求异常,自定义错误页面的bug
2012-02-15 09:09 1124zk版本5.0.6 现在遇到一个问题,觉得是bug, ... -
zk扩展工具--spring集成--字符串处理--日期处理
2012-02-15 09:09 1413事例 Xml代码 < ...
相关推荐
ZK数据绑定是ZK框架中的一个重要特性,它允许开发者将UI组件的显示与应用程序的数据模型直接关联起来,实现数据的动态更新和交互。ZK是一个基于Java的轻量级Web应用框架,专注于提供富客户端功能,使得在浏览器中...
一、ZK数据绑定基础 ZK的数据绑定机制基于MVC(Model-View-Controller)设计模式,通过数据绑定API实现了视图和模型之间的双向同步。这意味着当模型数据发生变化时,视图会自动更新,反之亦然。ZK的数据绑定主要涉及...
ZK CURD小例是针对初学者的一个教程,主要涵盖了数据绑定和页面间事件传送这两个核心概念。在Web开发中,ZK是一个基于组件的Java AJAX框架,它提供了丰富的用户界面组件和简单易用的数据绑定机制,使得开发者可以更...
这份文档将带你逐步了解ZK的基本概念和工作原理,包括ZK组件的使用、事件处理机制、数据绑定以及Ajax通信等。通过快速启动示例,你可以快速学会如何创建一个简单的ZK应用,并且理解ZK如何简化Web前端开发。 最后,...
ZK框架提供了丰富的组件,如ListBox和Grid等,组件与数据的绑定是开发ZK应用时的常见需求。例如,在ListBox组件中可以绑定一个数据集合,并且利用ZK提供的方法来动态更新ListBox的内容。同样,在Grid组件中也可以...
3. **数据绑定**:ZK的数据绑定功能使得UI组件可以直接与后端数据模型关联,实现数据的自动更新。数据绑定可以是单向或双向的,比如`<label>`组件可以绑定到一个Java对象的属性,当属性值改变时,标签的内容也会自动...
6. **数据绑定**:ZK的数据绑定机制允许开发者直接将UI组件与后台模型数据进行绑定,实现双向数据同步,减少了手动操作DOM的繁琐工作。 7. **性能优化**:ZK通过其自有的Ajax引擎,实现了高效的页面更新,降低了...
在通信方面,ZK框架支持客户端与服务器端之间的数据绑定,它允许双向数据同步,从而确保界面始终反映最新的数据状态。手册中详细讨论了命令和通知的绑定,以及如何使用EL表达式来进行数据绑定。 ZK框架还支持使用...
5. **数据绑定**:ZK提供了强大的数据绑定机制,允许我们在ViewModel中定义一个数据列表,然后直接绑定到`paging`组件的`source`属性上。这样,当ViewModel中的数据列表发生变化时,`paging`组件会自动更新其显示。 ...
- **自动数据绑定**:ZK框架具有自动数据绑定功能,可以将用户界面与后端数据模型进行同步。 - **事件驱动**:ZK支持事件驱动开发模式,可以捕捉用户的操作并作出响应。 ### Ajax开发的基础知识点 Ajax...
10. **zel.jar**:ZEL(ZK Expression Language)是ZK框架内的表达式语言,用于在ZUL文件中进行条件判断、逻辑运算和数据绑定等操作。zel.jar很可能包含了ZEL的相关实现和解析器。 这些依赖包的组合使用,使得...
4. **配置ZK-Spring**:需要引入ZK-Spring的库,这是一个连接ZK和Spring的桥梁,它提供了Spring的ApplicationContext到ZK Session的绑定,使得ZK组件可以直接使用Spring的Bean。 5. **事务管理**:由于Spring对事务...
- **Data Binding**:ZK提供了丰富的数据绑定特性,支持属性绑定、命令绑定等多种方式。 通过深入理解Groovy、Grails以及ZK框架的技术细节,开发者可以在敏捷开发的背景下,利用这些技术快速构建高质量的Web应用...
3. **数据绑定**:ZK的双向数据绑定功能使得UI和数据模型之间的同步变得简单,手册会阐述如何利用MVVM(Model-View-ViewModel)模式进行数据管理。 4. **事件处理**:讲解如何处理用户交互,包括点击事件、键盘事件...
3. **数据绑定**:ZK支持双向数据绑定,使得UI组件和业务数据模型之间的同步变得简单。分析这部分源码,可以学习如何实现高效的数据同步。 4. **网络通信**:ZK使用一种称为"ZK事件推送技术"(ZK Event Push ...
ZK框架是一种基于组件模型的Java Web应用框架,它简化了用户界面的构建和维护,提供了丰富的客户端组件和事件处理机制,同时支持服务器端的数据绑定。ZK Studio插件则将ZK的开发功能整合到了Eclipse IDE中,极大地...
- **数据绑定**:ZK支持双向数据绑定,可以方便地将组件的值与模型数据关联起来,简化数据管理。 **4. ZK与其它技术的集成** - **Spring集成**:ZK可以与Spring框架无缝集成,利用Spring的依赖注入和AOP特性,...
这本书籍可能涵盖了ZK 6的基础知识,包括ZK的工作原理、基本组件的使用、事件处理机制以及数据绑定等,适合初学者入门。 通过这些文档,无论是初学者还是有经验的开发者,都能系统地学习和提升ZK 6的技能。了解并...
通过这份"ZK 中文人员开发手册3.51",开发者可以学习到如何创建 ZK 应用、理解和使用 ZK 的组件库、设置事件监听器、处理数据绑定以及调试和优化 ZK 应用。这份手册是 ZK 开发者不可或缺的参考资料,有助于快速融入 ...
2. **ZUL页面与Window类的交互**:可以使用`<window id="win" use="com.cares.MyWindow">`或`<window id="win" apply="com.cares.MyApply">`将ZUL页面与自定义的Java类关联起来,实现数据绑定和业务逻辑处理。...