From Documentation
As described in the earlier sections, a macro component is instantiated to represent a regular macro. By default, HtmlMacroComponent is assumed (and instantiated). However, you provide a custom Java class to provide a better API to simplify the access and to encapsulate the implementation.
Contents |
Implement Custom Java Class for Macro
A custom Java class for macro components must extend from HtmlMacroComponent. HtmlMacroComponent will wire fellows and event listener automatically, so the implementation is straightforward.
For example, suppose we have a macro template as follows.
<hbox> Username: <textbox id="who"/> </hbox>
Then, we could implement a Java class for it:
import org.zkoss.zk.ui.HtmlMacroComponent; import org.zkoss.zul.Textbox; public class Username extends HtmlMacroComponent { private Textbox who; public Username() { compose(); //fore the template to be applied } public String getWho() { return this.who.getValue(); } public void setWho(String who) { this.who.setValue(who); } }
Declare Macro with Custom Java Class
Use Macro with Custom Java Class
In ZUML
The use of the macro component with a custom Java class in a ZUML page is the same as other macro components.
In Java
The main purpose of introducing a custom Java class is to simplify the use of a macro component in Java. For example, you could invoke a more meaningful setter directly rather than DynamicPropertied.setDynamicProperty(String, Object). In additions, the instantiation could be as simple as follows:
Username ua = new Username(); ua.setParent(wnd); ua.setWho("Joe");
Version History
Last Update : 2010/11/8
Version | Date | Content |
---|---|---|
5.0.5 | October, 2010 | HtmlMacroComponent.compose() was introduced. |