【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);
		}
	}
 

 

你可能感兴趣的:(bean,zk,Access)