Implement Custom Java Class
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.
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. |