Use Native Namespace instead of XHTML Namespace
ZK creates a component (one of the derives of AbstractTag) for each XML element specified with the XHTML component set. In other words, ZK will maintain their states on the server. However, if you won't change their states dynamically (i.e., after instantiated), you could use the native namespace instead.
1 <h:table xmlns:h="xhtml"> 2 <h:tr> 3 <h:td>Name</h:td> 4 <h:td> 5 <textbox/> 6 </h:td> 7 </h:tr> 8 </h:table>
On the other hand, the following code snippet won't create components for any elements specified with the native space (with prefix
1 <n:table xmlns:n="native"> 2 <n:tr> 3 <n:td>Name</n:td> 4 <n:td> 5 <textbox/> 6 </n:td> 7 </n:tr> 8 </n:table>
td are generated directly to the client, so they don't have no counterpart at the client either. You cannot change their states dynamically. For example, the following code snippet is incorrect.
1 <n:ul id="x" xmlns:n="native"/> 2 <button label="add" onClick="new Li().setParent(x)"/>
Notice that you could create the native components in Java too. For more information, please refer to the native namespace section.
HtmlNativeComponent n = new HtmlNativeComponent("table", "<tr><td>When:</td><td>", "</td></tr>"); n.setDynamicProperty("border", "1"); n.setDynamicProperty("width", "100%"); n.appendChild(new Datebox()); parent.appendChild(n);
- In fact, it will still create some components for the rerender purpose, such as Component.invalidate(). However, since they shall not be accessed, you could image they are not created at all.
The Stub-izing of Native Components
Though rarely, you could disable the stubing by setting a component attribute called
org.zkoss.zk.ui.stub.native (i.e., Attributes.STUB_NATIVE). A typical case is that supposed you have a component that has a native descendant, and you'd like to detach it and re-attach later. Then, you have to set this attribute to false, since the server does not maintain the states of stub-ized components (thus, it cannot be restored when attached back).
<div> <custom-attributes org.zkoss.zk.ui.stub.native="false"/> <n:table xmlns:n="native"> <!-- won't be stub-ized --> ...
Once set, descendant components unless it was set explicitly.
|5.0.6||January, 2011||The attribute called |