`

【zk开发】手动给组建添加注解工具方法

    博客分类:
  • ZK
阅读更多

以下代码在zkway项目ZkUtils类中

 

 

	/**
	 * 
	 * 给组建添加注解
	 * <p>
	 * 例如: 性别&lt;label
	 * value="@{userWin.user.sex,converter='com.xxxx.xxx.converter .SexConverter
	 * ',save-when='self.onChange'},load-when='self.onFocus',access='both'"/&gt;
	 * 
	 * @param comp
	 *            需要注解组建
	 * @param propName
	 *            需要注解的组建属性
	 * @param value
	 *            注解的字符值
	 * @param converter
	 *            注解转换器
	 * @param saveWhen
	 *            保存组建属性到bean的时机
	 * @param loadWhen
	 *            加载bean到组建属性的时机
	 * @param access
	 *            bean field访问等级,可选值save/load/both/none/''
	 */
	public static void addAnnotation(Component comp, String propName,
			String value, String converter, String saveWhen, String loadWhen,
			String access) {
		addAnnotation0(comp, propName, value, converter, saveWhen, loadWhen,
				access);
	}

	/**
	 * 给指定属性的组建添加注解,并设置注解转换器、加载与保存属性的时机
	 * 
	 * @param comp
	 *            需要添加注解的组建,不能为null
	 * @param propName
	 *            属性名, 不能为null或空
	 * @param value
	 *            注解值 ,不能为null或空
	 * @param converter
	 *            bean属性值与组建属性值的转换器 ,不能为null或空
	 * @param saveWhen
	 *            组建属性保存到bean field 的时机,
	 * @param loadWhen
	 *            加载bean field到组建属性的时机
	 */
	public static void addAnnotation(Component comp, String propName,
			String value, String converter, String saveWhen, String loadWhen) {
		addAnnotation0(comp, propName, value, converter, saveWhen, loadWhen,
				null);
	}

	/**
	 * 给指定属性的组建添加注解,并设置注解转换器与bean field的访问等级
	 * 
	 * @param comp
	 *            需要添加注解的组建,不能为null
	 * @param propName
	 *            属性名, 不能为null或空
	 * @param value
	 *            注解值 ,不能为null或空
	 * @param converter
	 *            bean属性值与组建属性值的转换器 ,不能为null或空
	 * @param access
	 *            bean field的访问等级,可选值为save/load/both/none/''
	 */
	public static void addAnnotation(Component comp, String propName,
			String value, String converter, String access) {
		if (propName == null || propName.length() < 1) {
			throw new IllegalArgumentException("属性名不能为空");
		}
		if (converter == null || converter.length() < 1) {
			throw new IllegalArgumentException("转换器不能为空");
		}
		addAnnotation0(comp, propName, value, converter, null, null, access);
	}

	/**
	 * 给指定属性的组建添加注解,并设置一个转换器
	 * 
	 * @param comp
	 *            需要添加注解的组建,不能为null
	 * @param propName
	 *            属性名, 不能为null或空
	 * @param value
	 *            注解值 ,不能为null或空
	 * @param converter
	 *            bean属性值与组建属性值的转换器 ,不能为null或空
	 */
	public static void addAnnotation(Component comp, String propName,
			String value, String converter) {
		if (propName == null || propName.length() < 1) {
			throw new IllegalArgumentException("属性名不能为空");
		}
		if (converter == null || converter.length() < 1) {
			throw new IllegalArgumentException("转换器不能为空");
		}
		addAnnotation0(comp, propName, value, converter, null, null, null);
	}

	/**
	 * 给指定属性的组建添加注解
	 * 
	 * @param comp
	 *            需要添加注解的组建,不能为null
	 * @param propName
	 *            属性名, 不能为null或空
	 * @param value
	 *            注解值 ,不能为null或空
	 */
	public static void addAnnotation(Component comp, String propName,
			String value) {
		if (propName == null || propName.length() < 1) {
			throw new IllegalArgumentException("属性名不能为空");
		}
		addAnnotation0(comp, propName, value, null, null, null, null);
	}

	private static void addAnnotation0(Component comp, String propName,
			String value, String converter, String saveWhen, String loadWhen,
			String access) {
		if (comp == null) {
			throw new IllegalArgumentException("组建不能为null");
		}
		ComponentCtrl compCtrl = (ComponentCtrl) comp;
		Map<String, String> attrs = new HashMap<String, String>(4);
		if (saveWhen != null && saveWhen.length() > 0) {
			attrs.put("save-when", saveWhen);
		}
		if (loadWhen != null && loadWhen.length() > 0) {
			attrs.put("load-when", loadWhen);
		}
		if (access != null && access.length() > 0) {
			attrs.put("access", loadWhen);
		}
		if (converter != null && converter.length() > 0) {
			attrs.put("converter", converter);
		}
		if (propName == null) {
			compCtrl.addAnnotation("default", attrs);
		} else {
			compCtrl.addAnnotation(propName, "default", attrs);
		}
	}
 

 

1
1
分享到:
评论

相关推荐

    利用myeclipse插件构建zk开发环境

    【标题】:利用myeclipse插件构建zk开发环境 【描述】:在现代软件开发中,ZooKeeper(简称zk)是一个广泛使用的分布式协调服务,它为分布式应用程序提供了高效且可靠的命名服务、配置管理、集群同步等核心功能。...

    zk开发全套资料(插件,开发手册,jar包,笔记和程序事例)

    在开发过程中,这些jar包会被添加到项目的类路径中,以便调用ZK的API进行开发。开发者需要了解如何正确引入和使用这些jar包,以确保应用的正常运行。 4. **笔记**:个人笔记通常包含了开发者在学习和实践ZK过程中...

    Zk中注解的使用(ZkDemo系列)

    总结来说,ZK中的注解是简化开发、增强代码可维护性的关键工具。通过熟练掌握并运用这些注解,开发者能够更轻松地构建出功能丰富且易于维护的ZK应用。在进行ZK开发时,结合标签提供的`源码`和`工具`资源,可以进一步...

    ZK框架开发手册

    ZK框架是一款用于Web开发的开源富客户端框架...整体来说,ZK框架开发手册中涵盖了从基础架构到高级功能的广泛知识点,为开发者提供了一套完整的Web应用开发工具包,让开发者能够快速构建功能强大、响应迅速的Web应用。

    zk开发手册和注意事项

    ZKStudio是一个专门用于ZK应用开发的集成开发环境(IDE),提供了一套完整工具来辅助开发者完成从UI设计、代码编写到应用部署的整个开发周期。ZKStudio支持在线安装和离线安装两种方式。在线安装较为简单,只需要...

    zk框架中的注解使用

    zk框架中的一些注解使用,项目中的需要用到的,各位可以了解一下,希望可以帮到大家!今后可以多交流,相互学习,共同进步。

    ZK 开发手册(带目录版本)

    ZK支持前后台分离的开发模式,使得开发人员可以专注于前端的界面设计和用户体验,同时后端开发者可以聚焦于数据处理和业务逻辑。这种分离有利于维护项目的可管理性和团队协作。 AJAX技术的出现解决了传统Web应用...

    zk连接工具

    zk连接工具,很好用的zk工具,zk主要用于我们知道要写一个分布式应用是非常困难的,主要原因就是局部故障。一个消息通过网络在两个节点之间传递时,网络如果发生故障,发送方并不知道接收方是否接收到了这个消息。他...

    ZK开发手册(中文教程)

    ZK开发手册(Developer's Guide)的中文翻译版一部分已经公开在zk-devguide 开发手册全部共有14章,超过200页,信息非常齐全: 第1到3章是ZK的简介以及基础构造的说明, 第4,5章介绍组件的周期以及如何处理事件....

    ajax框架 zk开发手册

    《ZK开发手册》是ZK框架的官方文档,详细介绍了ZK的使用方法、组件、API、事件处理、集成策略等内容,是开发者学习和解决问题的重要参考资料。阅读该手册,可以帮助开发人员更好地理解和运用ZK框架,提高开发效率,...

    zk 开发依赖包

    开发者在进行ZK应用开发时,通常会直接引用此包,因为它提供了构建ZK应用的基本工具和API。 4. **zcommon.jar**:从名字推测,这可能是ZK的公共库,包含了跨模块共享的通用类和方法,可能包括数据结构、辅助函数等...

    ZK4500SDK包 ZK4500、中控指纹仪、SDK开发包带各种语言的demo

    SDK(Software Development Kit)则是一套完整的开发工具集,包含了必要的库文件、头文件、示例代码以及开发文档,帮助开发者理解如何利用ZK4500进行软件开发。 在压缩包中,`setup.exe`是安装程序,用于在开发环境...

    ZK(AJAX开发工具)开发手册

    ### ZK(AJAX开发工具)开发手册 #### 一、引言 ZK作为一款强大的工具被广泛应用于RIA(Rich Internet Applications)Web应用程序的界面开发。与传统的Web应用程序相比,ZK提供了一种更为直观且高效的方式来进行...

    ZK框架:Ajax开发实战

    由于提供的文件信息中,有关股票知识的部分占据了大部分内容,而与标题“ZK框架:Ajax开发实战”相关的内容并未在文件中明确出现,因此无法直接从给定的文件信息中生成与ZK框架和Ajax开发相关的内容。不过,我将基于...

    zk中文开发手册pdf版(基于3.5.1)

    7. **ZK插件和工具**:介绍可用的开发工具,如ZK Studio(Eclipse插件)和ZK Designer,以提升开发效率。 8. **最佳实践**:书中还包含了性能优化技巧、错误排查方法以及项目部署建议,帮助你构建高效稳定的ZK应用...

    zk+spring+hibernate(全部用注解)

    1. **ZK配置**:在代码中,可能有一个配置类,使用`@Configuration`注解,其中包含`@Bean`注解的方法,用于创建并返回一个`ZooKeeper`实例。这可能还涉及`CuratorFramework`等库的使用,以便于与ZK进行交互。 2. **...

    ZK桌面管理工具

    在开发过程中,ZK桌面管理工具为开发者提供了极大的便利,使得查看和操作ZooKeeper中的数据变得更加直观和简单。 ZooKeeper的核心概念包括节点(ZNode)、会话(Session)、Watcher等。ZNode是ZooKeeper中的基本...

    ZK开发文档中文HTML版

    对于开发工具和集成环境,文档也会有所提及,如如何在Eclipse或IntelliJ IDEA中配置ZK项目,以及使用ZK Studio或ZK Developer插件提升开发效率。 最后,文档可能会包含一些高级话题,如ZK的扩展机制,如Composer和...

Global site tag (gtag.js) - Google Analytics