以下代码在zkway项目ZkUtils类中
/** * * 给组建添加注解 * <p> * 例如: 性别<label * value="@{userWin.user.sex,converter='com.xxxx.xxx.converter .SexConverter * ',save-when='self.onChange'},load-when='self.onFocus',access='both'"/> * * @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); } }