就像在ZUML及XUL组件集(ZUML with the XUL Component Set)一章中与HTML标签一起工作(Work with HTML Tags) 一节描述的那样,ZK使用XHTML命名空间为每个指定的XML元素创建一个ZK组件。换言之,ZK 必须维护它们在服务器端的状态。由于HTML标签的数量通常很大,所以若你使用本地命名空间代替可以显著提高性能。
例如,下面的代码片断会创建五个组件(一个table
,tr
,textbox
和两个td
)。
<h:table xmlns:h="http://www.w3.org/1999/xhtml"> <h:tr> <h:td>Name</h:td> <h:td> <textbox/> </h:td> </h:tr> </h:table>
另外,下面的代码片断会创建两个组件(一个特殊的组件,为客户端产生table
,tr
和td
,和一个textbox
)。
<n:table xmlns:n="http://www.zkoss.org/2005/zk/native"> <n:tr> <n:td>Name</n:td> <n:td> <textbox/> </n:td> </n:tr> </n:table>
注意,table
,tr
和td
会直接为客户端产生,所以它们在客户端没有副本(counterpart)。因此,你不能够动态改变它。例如,下面的代码片断是错误的。
<n:ul id="x" xmlns:n="http://www.zkoss.org/2005/zk/native"/> <button label="add" onClick="new Li().setParent(x)"/>
而是,你若想动态改变它们,你必须使用html
组件或XHTML命名空间。