- 浏览: 1149696 次
- 性别:
- 来自: 火星郊区
博客专栏
-
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倍效率”开发者
- import java.text.DecimalFormat;
- import java.text.ParseException;
- import java.util.List;
- import org.zkoss.zk.ui.Component;
- import org.zkoss.zk.ui.util.GenericAutowireComposer;
- import org.zkoss.zkplus.databind.AnnotateDataBinder;
- import org.zkoss.zkplus.databind.DataBinder;
- import com.sun4love.common.web.zk.converter.SexRadiogroupConverter;
- /**
- * 注解绑定类
- * <p>
- * 在GenericAutowireComposer基础上对注解进行增强, 因此你无需再页面上显式添加注解支持指令
- *
- * <pre>
- * <?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit"?>
- * </pre>
- * <p>
- *
- * @author sun4love
- *
- */
- abstract public class GenericDataBinderComposer extends GenericAutowireComposer {
- private static final long serialVersionUID = -8962566563467903754L;
- protected DataBinder binder;
- @Override
- public void doAfterCompose(Component comp) throws Exception {
- super.doAfterCompose(comp);
- binder = new AnnotateDataBinder(comp);
- comp.setAttribute("binder", binder);
- }
- protected void loadAll() {
- binder.loadAll();
- }
- protected void loadAttribute(Component comp, String attr) {
- binder.loadAttribute(comp, attr);
- }
- protected void loadComponent(Component comp) {
- binder.loadComponent(comp);
- }
- /**
- * 绑定bean到ui组件上
- * <p>
- * 范例
- * <hr />
- *
- * <pre>
- * <code>
- * <window id="userWin" apply="GenericDataBinderComposerChild">
- * <textbox id="txtFirstName" />
- * <textbox id="txtlastName" />
- * <label id="lblFullName" />
- * </window>
- * GenericDataBinderComposerChild类
- *
- * public GenericDataBinderComposerChild extends GenericDataBinderComposer{
- * private Textbox txtFirstName;
- * private Textbox txtLastName;
- * private Label lblFullName;
- *
- * public void doAfterCompose(Component comp) throws Exception {
- * super.doAfterCompose(comp);
- * binder.addBinding(txtFirstName, "value", "userWin$composer.user.firstName");
- * binder.addBinding(txtLastName, "value", "userWin$composer.user.lastName");
- *
- * //"txtLastName.onBlur"中的txtLastName是页面上<textbox id="txtlastName" />
- * //userWin$composer中的userWin是页面上window的id,$.composer是固定格式
- * addBinding(lblFullName, "value", "userWin$composer.user.fullName","txtLastName.onBlur" , null,null,null);
- * }
- * }
- * </pre>
- *
- * @param comp
- * ui组件
- * @param attr
- * ui组件的属性,例如<textbox value="@{user.name}"/>中的value
- * @param expr
- * 表达式,例如,例如<textbox value="@{user.name}"/>中的user.name
- * @param loadWhenEvents
- * 加载bean到ui的时机,例如comp1.onClck、comp2、onBlur、comp3.onSelect,
- * 等同于<textbox id="txtFullName"
- * value="@{user.fullName, load-when=
- * 'txtLastName.onBlur'}"/>中的txtLastName.onBlur
- * @param saveWhenEvent
- * 保存ui value到bean的时机,例如comp3.onBlur, 等同于<textbox
- * id="txtFullName" value="@{user.fullName,
- * save-when=
- * 'txtFullName.onBlur',}"/>中的txtFullName.onBlur
- * @param access
- * 访问安全性,允许保存ui value 到bean,还是是load bean到ui,还是两者都是,或者什么都不做,
- * 可选值为none,save,load,both(save/load),
- * @param converter
- * 转换器,ui到bean之间的互相转换,类似hibernate jdbc type到db type或者struts中的转换器
- * ,样例见{@link SexRadiogroupConverter}
- */
- protected void addBinding(Component comp, String attr, String expr,
- String loadWhenEvent, String saveWhenEvent, String access,
- String converter) {
- if (loadWhenEvent != null && "".equals(loadWhenEvent.trim())) {
- binder.addBinding(comp, attr, expr, (List) null, saveWhenEvent,
- access, converter);
- } else {
- binder.addBinding(comp, attr, expr, new String[] { loadWhenEvent },
- saveWhenEvent, access, converter);
- }
- }
- /**
- * 绑定bean到ui组件上
- * <p>
- * 范例
- * <hr />
- *
- * <pre>
- * 页面
- * <window id="userWin" apply="GenericDataBinderComposerChild">
- * <textbox id="txtFirstName" />
- * <textbox id="txtlastName" />
- * <label id="lblFullName" />
- * </window>
- * GenericDataBinderComposerChild类
- *
- * public GenericDataBinderComposerChild extends GenericDataBinderComposer{
- * private Textbox txtFirstName;
- * private Textbox txtLastName;
- * private Label lblFullName;
- *
- * public void doAfterCompose(Component comp) throws Exception {
- * super.doAfterCompose(comp);
- * binder.addBinding(txtFirstName, "value", "userWin$composer.user.firstName");
- * binder.addBinding(txtLastName, "value", "userWin$composer.user.lastName");
- *
- * //"txtLastName.onBlur"中的txtLastName是页面上<textbox id="txtlastName" />
- * //userWin$composer中的userWin是页面上window的id,$.composer是固定格式
- * addBinding(lblFullName, "value", "userWin$composer.user.fullName","txtLastName.onBlur" , null,null,null);
- * }
- * }
- * </pre>
- *
- * @param comp
- * ui组件
- * @param attr
- * ui组件的属性,例如<textbox value="@{user.name}"/>中的value
- * @param expr
- * 表达式,例如,例如<textbox value="@{user.name}"/>中的user.name
- * @param access
- * 访问安全性,允许保存ui value 到bean,还是是load bean到ui,还是两者都是,或者什么都不做,
- * 可选值为none,save,load,both(save/load),
- */
- protected void addBinding(Component comp, String attr, String expr,
- String access) {
- binder.addBinding(comp, attr, expr, (List) null, (List) null, access,
- null);
- }
- /**
- * 绑定bean到ui组件上
- * <p>
- * 范例
- * <hr />
- *
- * <pre>
- * <window id="userWin" apply="GenericDataBinderComposerChild">
- * <textbox id="txtFirstName" />
- * <textbox id="txtlastName" />
- * <label id="lblFullName" />
- * </window>
- * GenericDataBinderComposerChild类
- *
- * public GenericDataBinderComposerChild extends GenericDataBinderComposer{
- * private Textbox txtFirstName;
- * private Textbox txtLastName;
- * private Label lblFullName;
- *
- * public void doAfterCompose(Component comp) throws Exception {
- * super.doAfterCompose(comp);
- * binder.addBinding(txtFirstName, "value", "userWin$composer.user.firstName");
- * binder.addBinding(txtLastName, "value", "userWin$composer.user.lastName");
- *
- * //"txtLastName.onBlur"中的txtLastName是页面上<textbox id="txtlastName" />
- * //userWin$composer中的userWin是页面上window的id,$.composer是固定格式
- * addBinding(lblFullName, "value", "userWin$composer.user.fullName","txtLastName.onBlur" , null,null,null);
- * }
- * }
- *
- * </pre>
- *
- * @param comp
- * ui组件
- * @param attr
- * ui组件的属性,例如<textbox value="@{user.name}"/>中的value
- * @param expr
- * 表达式,例如,例如<textbox value="@{user.name}"/>中的user.name
- * @param loadWhenEvents
- * 加载bean到ui的时机,例如comp1.onClck、comp2、onBlur、comp3.onSelect,
- * 等同于<textbox id="txtFullName"
- * value="@{user.fullName, load-when=
- * 'txtLastName.onBlur'}"/>中的txtLastName.onBlur
- * @param access
- * 访问安全性,允许保存ui value 到bean,还是是load bean到ui,还是两者都是,或者什么都不做,
- * 可选值为none,save,load,both(save/load),
- * @param converter
- * 转换器,ui到bean之间的互相转换,类似hibernate jdbc type到db type或者struts中的转换器
- * ,样例见{@link SexRadiogroupConverter}
- */
- protected void addBinding(Component comp, String attr, String expr,
- String access, String converter) {
- binder.addBinding(comp, attr, expr, (List) null, (List) null, access,
- converter);
- }
- }
import java.text.DecimalFormat; import java.text.ParseException; import java.util.List; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.util.GenericAutowireComposer; import org.zkoss.zkplus.databind.AnnotateDataBinder; import org.zkoss.zkplus.databind.DataBinder; import com.sun4love.common.web.zk.converter.SexRadiogroupConverter; /** * 注解绑定类 * <p> * 在GenericAutowireComposer基础上对注解进行增强, 因此你无需再页面上显式添加注解支持指令 * * <pre> * <?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit"?> * </pre> * <p> * * @author sun4love * */ abstract public class GenericDataBinderComposer extends GenericAutowireComposer { private static final long serialVersionUID = -8962566563467903754L; protected DataBinder binder; @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); binder = new AnnotateDataBinder(comp); comp.setAttribute("binder", binder); } protected void loadAll() { binder.loadAll(); } protected void loadAttribute(Component comp, String attr) { binder.loadAttribute(comp, attr); } protected void loadComponent(Component comp) { binder.loadComponent(comp); } /** * 绑定bean到ui组件上 * <p> * 范例 * <hr /> * * <pre> * <code> * <window id="userWin" apply="GenericDataBinderComposerChild"> * <textbox id="txtFirstName" /> * <textbox id="txtlastName" /> * <label id="lblFullName" /> * </window> * GenericDataBinderComposerChild类 * * public GenericDataBinderComposerChild extends GenericDataBinderComposer{ * private Textbox txtFirstName; * private Textbox txtLastName; * private Label lblFullName; * * public void doAfterCompose(Component comp) throws Exception { * super.doAfterCompose(comp); * binder.addBinding(txtFirstName, "value", "userWin$composer.user.firstName"); * binder.addBinding(txtLastName, "value", "userWin$composer.user.lastName"); * * //"txtLastName.onBlur"中的txtLastName是页面上<textbox id="txtlastName" /> * //userWin$composer中的userWin是页面上window的id,$.composer是固定格式 * addBinding(lblFullName, "value", "userWin$composer.user.fullName","txtLastName.onBlur" , null,null,null); * } * } * </pre> * * @param comp * ui组件 * @param attr * ui组件的属性,例如<textbox value="@{user.name}"/>中的value * @param expr * 表达式,例如,例如<textbox value="@{user.name}"/>中的user.name * @param loadWhenEvents * 加载bean到ui的时机,例如comp1.onClck、comp2、onBlur、comp3.onSelect, * 等同于<textbox id="txtFullName" * value="@{user.fullName, load-when= * 'txtLastName.onBlur'}"/>中的txtLastName.onBlur * @param saveWhenEvent * 保存ui value到bean的时机,例如comp3.onBlur, 等同于<textbox * id="txtFullName" value="@{user.fullName, * save-when= * 'txtFullName.onBlur',}"/>中的txtFullName.onBlur * @param access * 访问安全性,允许保存ui value 到bean,还是是load bean到ui,还是两者都是,或者什么都不做, * 可选值为none,save,load,both(save/load), * @param converter * 转换器,ui到bean之间的互相转换,类似hibernate jdbc type到db type或者struts中的转换器 * ,样例见{@link SexRadiogroupConverter} */ protected void addBinding(Component comp, String attr, String expr, String loadWhenEvent, String saveWhenEvent, String access, String converter) { if (loadWhenEvent != null && "".equals(loadWhenEvent.trim())) { binder.addBinding(comp, attr, expr, (List) null, saveWhenEvent, access, converter); } else { binder.addBinding(comp, attr, expr, new String[] { loadWhenEvent }, saveWhenEvent, access, converter); } } /** * 绑定bean到ui组件上 * <p> * 范例 * <hr /> * * <pre> * 页面 * <window id="userWin" apply="GenericDataBinderComposerChild"> * <textbox id="txtFirstName" /> * <textbox id="txtlastName" /> * <label id="lblFullName" /> * </window> * GenericDataBinderComposerChild类 * * public GenericDataBinderComposerChild extends GenericDataBinderComposer{ * private Textbox txtFirstName; * private Textbox txtLastName; * private Label lblFullName; * * public void doAfterCompose(Component comp) throws Exception { * super.doAfterCompose(comp); * binder.addBinding(txtFirstName, "value", "userWin$composer.user.firstName"); * binder.addBinding(txtLastName, "value", "userWin$composer.user.lastName"); * * //"txtLastName.onBlur"中的txtLastName是页面上<textbox id="txtlastName" /> * //userWin$composer中的userWin是页面上window的id,$.composer是固定格式 * addBinding(lblFullName, "value", "userWin$composer.user.fullName","txtLastName.onBlur" , null,null,null); * } * } * </pre> * * @param comp * ui组件 * @param attr * ui组件的属性,例如<textbox value="@{user.name}"/>中的value * @param expr * 表达式,例如,例如<textbox value="@{user.name}"/>中的user.name * @param access * 访问安全性,允许保存ui value 到bean,还是是load bean到ui,还是两者都是,或者什么都不做, * 可选值为none,save,load,both(save/load), */ protected void addBinding(Component comp, String attr, String expr, String access) { binder.addBinding(comp, attr, expr, (List) null, (List) null, access, null); } /** * 绑定bean到ui组件上 * <p> * 范例 * <hr /> * * <pre> * <window id="userWin" apply="GenericDataBinderComposerChild"> * <textbox id="txtFirstName" /> * <textbox id="txtlastName" /> * <label id="lblFullName" /> * </window> * GenericDataBinderComposerChild类 * * public GenericDataBinderComposerChild extends GenericDataBinderComposer{ * private Textbox txtFirstName; * private Textbox txtLastName; * private Label lblFullName; * * public void doAfterCompose(Component comp) throws Exception { * super.doAfterCompose(comp); * binder.addBinding(txtFirstName, "value", "userWin$composer.user.firstName"); * binder.addBinding(txtLastName, "value", "userWin$composer.user.lastName"); * * //"txtLastName.onBlur"中的txtLastName是页面上<textbox id="txtlastName" /> * //userWin$composer中的userWin是页面上window的id,$.composer是固定格式 * addBinding(lblFullName, "value", "userWin$composer.user.fullName","txtLastName.onBlur" , null,null,null); * } * } * * </pre> * * @param comp * ui组件 * @param attr * ui组件的属性,例如<textbox value="@{user.name}"/>中的value * @param expr * 表达式,例如,例如<textbox value="@{user.name}"/>中的user.name * @param loadWhenEvents * 加载bean到ui的时机,例如comp1.onClck、comp2、onBlur、comp3.onSelect, * 等同于<textbox id="txtFullName" * value="@{user.fullName, load-when= * 'txtLastName.onBlur'}"/>中的txtLastName.onBlur * @param access * 访问安全性,允许保存ui value 到bean,还是是load bean到ui,还是两者都是,或者什么都不做, * 可选值为none,save,load,both(save/load), * @param converter * 转换器,ui到bean之间的互相转换,类似hibernate jdbc type到db type或者struts中的转换器 * ,样例见{@link SexRadiogroupConverter} */ protected void addBinding(Component comp, String attr, String expr, String access, String converter) { binder.addBinding(comp, attr, expr, (List) null, (List) null, access, converter); } }
发表评论
-
ZK PPT
2012-02-27 17:28 1201附件中为ZK系列的PPT -
zk+spring+hibernate延迟加载的解决办法
2012-02-24 14:22 1269由于Zk 的AU request,lazy load现在没 ... -
【zk开发】zk注解的秘密
2012-02-24 14:23 1590The DataBinder that reads ZUML ... -
【zk开发】zkstudio安装及使用视屏
2012-02-26 12:04 1240安装视屏 http://docs.zkoss.org/w ... -
zk主题生成器
2012-02-26 12:04 1616生成器在附件内,兼容zk3.x 与zk5.x,zktheme ... -
zk服务器端获取鼠标点击位置
2012-02-26 12:04 1393index.zul Xml代码 ... -
zk Fiddle-zk在线测试保存代码分享平台
2012-02-23 08:20 1468http://zkfiddle.org/ 是zk项目组之一 ... -
zksample2-一个复杂应用的zk示例
2012-02-23 08:19 1481Zks ample2 is a demo applica ... -
zk5.0.8发布
2012-02-23 08:18 954该版本是一个维护版本,主要于bug修复及引入几个新特性 ... -
zk数据绑定
2012-02-23 08:17 1797简介 : 关于数据绑 ... -
zk EE/PE/CE的区别
2012-02-18 09:32 3101自从zk5.0以后,zk拆分为 ... -
ZK 5.0.8 新特性
2012-02-18 09:32 18928月16日,zk官网:zk5.0.8将要发布 zk5. ... -
zk client与server code结合提高长操作的响应性
2012-02-18 09:32 1430一,关于长操作与响应性 zk client与serve ... -
zk tooltiptext中换行
2012-02-17 11:37 1536Xml代码 <window ti ... -
zk下载文件中文乱码解决方案
2012-02-17 11:37 3668本文来自http://sun4love.iteye.com/b ... -
【zk视频】如何了解一个组件默认支持服务器端事件
2012-02-17 11:37 1308如何了解一个组件默认支持服务器端事件? 知识点:在z ... -
【zk视频】如何查看zk源码,了解zk原理
2012-02-17 11:37 1650当org.zkoss.zul.Window关闭时,zk是如 ... -
ZK 5.0.7发布,及新特性
2012-02-15 09:10 1150ZK 是一套以 AJAX/XUL/Java 为基础的网页应用 ... -
use【组件公共属性】
2012-02-15 09:09 1085语法 apply="a-class- ... -
zk异步请求异常,自定义错误页面的bug
2012-02-15 09:09 1127zk版本5.0.6 现在遇到一个问题,觉得是bug, ...
相关推荐
在这个"ZK开发文档中文HTML版"中,你将找到关于如何使用ZK框架进行开发的详细指南。 首先,文档会介绍ZK的基本概念,包括组件系统、事件处理和布局管理。ZK的组件库丰富,涵盖了各种常见的UI元素,如按钮、表格、树...
在本文中,我们将深入探讨Laravel开发中的Composer插件,以及如何有效地利用它们来增强项目的功能和效率。Composer是PHP的一个依赖管理工具,它允许开发者声明项目所依赖的库,并自动处理这些库的安装和更新。在...
通过阅读和实践《ZK开发手册(中文)》,开发者不仅能掌握ZK框架的基本用法,还能深入了解其高级特性和最佳实践,从而更高效地开发出高质量的Web应用程序。对于那些希望提升Web应用用户体验、减少前端复杂性的开发者来...
Laravel开发-composer Rinvex Composer是一个直观的软件包,它利用Composer插件API支持安装过程中的其他操作,例如在默认供应商库外安装软件包,以及在安装、更新和卸载过程中运行自定义脚本。
在PHP开发环境中,Composer起到了构建、部署和维护应用程序依赖关系的核心作用。本篇将详细介绍Composer-Setup.exe,它是Composer的Windows安装程序,以及如何在已安装PHP的基础上配置和使用Composer。 首先,让...
Unity3D是一款强大的游戏开发引擎,广泛应用于游戏开发、虚拟现实和增强现实项目。在创建大规模、真实的3D环境时,地形系统是至关重要的部分。本文将深入探讨Unity3D中的两个知名地形插件——WorldComposer和Terrain...
本实战教程将深入探讨如何利用ZK框架进行Ajax开发,旨在帮助开发者高效地构建交互性强、响应快速的Web应用。 在ZK框架中,Ajax的核心概念是事件驱动和组件模型。ZK通过事件监听和组件间的通信机制,使得Ajax请求...
Composer是PHP开发中不可或缺的工具,它主要用于管理项目依赖,使开发者能够轻松地安装、更新和管理各种PHP库和框架。在Windows环境下,有时通过官方渠道下载Composer可能由于网络问题而遇到困难,因此这个Windows...
在本文中,我们将深入探讨`Laravel开发-flow-composer-installers`这个主题,这是一个与Laravel框架相关的开发工具,主要用于优化Composer的包安装过程。Composer是PHP中的依赖管理工具,而`composer-installers`则...
在这个"Laravel开发-composer-about"主题中,我们将深入探讨`composer.lock`文件以及如何获取和解析其中关于已使用包的信息。 `composer.json`文件是项目的核心配置文件,它定义了项目所需的包、版本约束和其他元...
总结起来,Composer是PHP开发中不可或缺的一部分,而正确配置PHP环境,尤其是OpenSSL扩展和证书,对于顺利安装和使用Composer至关重要。遇到问题时,检查PHP版本、启用OpenSSL扩展、配置正确的证书路径是解决问题的...
Code Composer Studio (CCS) 集成开发环境 (IDE)官方安装包,注意是在线的,省去注册登录的麻烦。
在PHP项目开发中,合理利用Composer可以极大地提高开发效率,简化项目依赖管理的过程。此外,Composer还支持自更新功能,可以通过`composer self-update`命令随时获取最新版本的Composer,保持工具的新鲜度。
在Laravel框架的开发过程中,`composer-bump`是一个非常重要的工具,它允许开发者通过Artisan命令行工具来轻松地更新`composer.json`文件中的版本号。`composer.json`是PHP项目的核心配置文件,用于定义项目的依赖...
本主题将深入探讨Laravel开发中的一个重要组件——`laravel-composer`,以及如何利用Artisan命令行工具来操作Composer。 首先,我们要明白Composer在PHP开发中的角色。Composer是PHP的一个依赖管理工具,它允许...
NVIDIA FX Composer是一款强大的视觉效果和图形开发工具,主要用于创建、测试和调试复杂的实时图形应用程序。这款工具在游戏开发、专业可视化以及虚拟现实等领域有着广泛的应用。FX Composer提供了直观的界面,让...
1. **依赖管理**:Composer 使开发人员能够声明项目依赖的库,并自动下载和安装这些库及其依赖。这简化了项目的构建和维护,因为所有的库都会保持在最新且兼容的状态。 2. **自动加载**:Composer 生成一个自动加载...