HtmlMacroComponent"

From Documentation
(7 intermediate revisions by 3 users not shown)
Line 9: Line 9:
 
= Employment/Purpose =
 
= Employment/Purpose =
  
 +
The base class for macro components.
  
 +
Since ZK 5.0.4, by default invoking <javadoc method="afterCompose()">org.zkoss.zk.ui.HtmlMacroComponent</javadoc> supports auto forward events and wire accessible variables to this component.
 +
 +
For example, (usemacro.zul)
 +
<source lang="xml">
 +
<?init zscript="macro.zs"?>
 +
<?component name="username" macroURI="macro.zul" class="Username"?>
 +
<window id="wnd">
 +
<username id="ua"/>
 +
<username label="Account"/>
 +
</window>
 +
</source>
 +
 +
(macro.zs)
 +
<source lang="java">
 +
import org.zkoss.zk.ui.*;
 +
import org.zkoss.zul.*;
 +
 +
public class Username extends HtmlMacroComponent {
 +
Button btn; // auto wire
 +
 +
// auto forward
 +
public void onClick$btn () {
 +
System.out.println("success... and btn varible is not null : " + (btn != null));
 +
}
 +
};
 +
</source>
 +
 +
(macro.zul)
 +
<source lang="xml">
 +
<grid id="mc_grid">
 +
<rows>
 +
<row id="r">
 +
<button label="${empty arg.label ? 'Username': arg.label}" id="btn"/>
 +
</row>
 +
</rows>
 +
</grid>
 +
</source>
 +
 +
If you want to turn off the auto wiring mechanism, please refer to the following steps:
 +
 +
Turn off auto wire mechanism by specifying the Library Property "org.zkoss.zk.ui.macro.autowire.disabled" to "true" in WEB-INF/zk.xml. If you did not specify the Library Property, the default is false.
 +
<source lang="xml"><library-property>
 +
<name>org.zkoss.zk.ui.macro.autowire.disabled</name>
 +
    <value>true</value>
 +
</library-property></source>
 +
or turn off auto forward events by specifying the Library Property "org.zkoss.zk.ui.macro.autoforward.disabled" to "true" in WEB-INF/zk.xml. If you did not specify the Library Property, the default is false.
 +
<source lang="xml"><library-property>
 +
<name>org.zkoss.zk.ui.macro.autoforward.disabled</name>
 +
    <value>true</value>
 +
</library-property></source>
 +
 +
 +
In the early version, if you want to apply the auto-wiring, you can invoke <javadoc method="wireVariables(org.zkoss.zk.ui.Component, java.lang.Object)">org.zkoss.zk.ui.Components</javadoc> in <javadoc method="afterCompose()">org.zkoss.zk.ui.HtmlMacroComponent</javadoc> as follows.
 +
 +
<source lang="java">
 +
public void afterCompose() {
 +
    super.afterCompose(); //create components
 +
 +
    Components.wireVariables(this, this);
 +
    Components.addForward(this, this);
 +
}
 +
</source>
  
 
=Example=
 
=Example=
Line 47: Line 110:
 
! Version !! Date !! Content
 
! Version !! Date !! Content
 
|-
 
|-
| &nbsp;
+
| 5.0.3
| &nbsp;
+
| June 2010
| &nbsp;
+
| The corresponding DOM element is customizable. It is default to SPAN (the same as prior version) but you can change it to any tag by use of <javadoc method="setEnclosingTag(java.lang.String)">org.zkoss.zk.ui.HtmlMacroComponent</javadoc>.
 +
|-
 +
| 5.0.4
 +
| August 2010
 +
| By default, invoking <javadoc method="afterCompose()">org.zkoss.zk.ui.HtmlMacroComponent</javadoc> supports auto forward events and wire accessible variables to this component.
 
|}
 
|}
  
 
{{ZKComponentReferencePageFooter}}
 
{{ZKComponentReferencePageFooter}}

Revision as of 02:21, 27 April 2012


HtmlMacroComponent

Html Macro Component

Employment/Purpose

The base class for macro components.

Since ZK 5.0.4, by default invoking HtmlMacroComponent.afterCompose() supports auto forward events and wire accessible variables to this component.

For example, (usemacro.zul)

<?init zscript="macro.zs"?>
<?component name="username" macroURI="macro.zul" class="Username"?>
<window id="wnd">
	<username id="ua"/>
	<username label="Account"/>
</window>

(macro.zs)

import org.zkoss.zk.ui.*;
import org.zkoss.zul.*;

public class Username extends HtmlMacroComponent {
	Button btn; // auto wire
	
	// auto forward
	public void onClick$btn () {
		System.out.println("success... and btn varible is not null : " + (btn != null));
	}
};

(macro.zul)

<grid id="mc_grid">
	<rows>
		<row id="r">
			<button label="${empty arg.label ? 'Username': arg.label}" id="btn"/>
		</row>
	</rows>
</grid>

If you want to turn off the auto wiring mechanism, please refer to the following steps:

Turn off auto wire mechanism by specifying the Library Property "org.zkoss.zk.ui.macro.autowire.disabled" to "true" in WEB-INF/zk.xml. If you did not specify the Library Property, the default is false.

<library-property>
	<name>org.zkoss.zk.ui.macro.autowire.disabled</name>
    	<value>true</value>
</library-property>

or turn off auto forward events by specifying the Library Property "org.zkoss.zk.ui.macro.autoforward.disabled" to "true" in WEB-INF/zk.xml. If you did not specify the Library Property, the default is false.

<library-property>
	<name>org.zkoss.zk.ui.macro.autoforward.disabled</name>
    	<value>true</value>
</library-property>


In the early version, if you want to apply the auto-wiring, you can invoke Components.wireVariables(Component, Object) in HtmlMacroComponent.afterCompose() as follows.

public void afterCompose() {
    super.afterCompose(); //create components

    Components.wireVariables(this, this);
    Components.addForward(this, this);
}

Example

N/A

Supported Events

Name
Event Type
None None

See also events inherited from HtmlBasedComponent's Supported Events.

Supported Children

*ALL

Use cases

Version Description Example Location
 

Version History

Version Date Content
5.0.3 June 2010 The corresponding DOM element is customizable. It is default to SPAN (the same as prior version) but you can change it to any tag by use of HtmlMacroComponent.setEnclosingTag(String).
5.0.4 August 2010 By default, invoking HtmlMacroComponent.afterCompose() supports auto forward events and wire accessible variables to this component.



Last Update : 2012/04/27

Copyright © Potix Corporation. This article is licensed under GNU Free Documentation License.