日期:2014-05-17 浏览次数:20698 次
一,所属命名空间不同
zul组件? xmls= http://www.zkoss.org/2005/zul
zhtml组件 xmlns:h=" http://www.w3.org/1999/xhtml "
native组件 xmlns:n=" http://www.zkoss.org/2005/zk/native "
二,组件类不同
zul组件? zul.jar下组件类
zhtml组件 zhtml.jar下组件类
native组件 全部是zk.jar下的类org.zkoss.zk.ui.HtmlNativeComponent
?
三,事件处理EventHandler
?1,zhtml组件 可以触发事件处理函数onSetting
?? <h:input? value="测试" type="button" forward="onSetting" xmlns:h=" http://www.w3.org/1999/xhtml"/ >
2, native组件不可以触发事件处理函数onSetting?
??? <n:input? value="测试" type="button" forward="onSetting" xmlns:n="native"/>
3,zul组件可以触发事件处理函数onSetting?
??? <button label="测试" id="btnSubmit" forward="onSetting"></button>
?
四,受管状态
所谓受管状态,全由个人杜撰,即所在命名空间保存其组件信息,可通过命名空间查找删除组件
1)结论
?? 1,zul组件? 与? zhtml组件? 是受所在命名空间管理的
?? 2,native组件 不受所在命名空间管理
2)结论依据
? zul组件、zhtml组件、native组件 有一个共同祖先 org.zkoss.zk.ui.AbstractComponent类
? 在zk5.06版中的AbstractComponent类的setId(543行)方法中有一行代码
? addToIdSpaces(this);(589行),意思是将当前组件添加到id命名空间中,
? 例如添加到window,page中,? 但在addToIdSpaces方法中有一段有趣的代码
/** Adds to the ID spaces, if any, when ID is changed. * Caller has to make sure the uniqueness (and not auto id). */ private static void addToIdSpaces(final Component comp) { final String compId = comp.getId(); if (comp instanceof NonFellow || isAutoId(compId)) return; //nothing to do if (comp instanceof IdSpace) ((AbstractComponent)comp).bindToIdSpace(comp); addFellow(comp, getSpaceOwnerOfParent(comp)); }
?
??? 这段有趣的代码?
?