import"

From Documentation
Line 1: Line 1:
 
{{ZUMLReferencePageHeader}}
 
{{ZUMLReferencePageHeader}}
  
 +
<!-- implemented in org.zkoss.zk.ui.metainfo.Parser -->
  
 
=Import Classes=
 
=Import Classes=
Line 37: Line 38:
 
It imports the directives, such as component definitions (<code><?component?></code>) and initiators (<code><?init?></code>), defined in another ZUML page.
 
It imports the directives, such as component definitions (<code><?component?></code>) and initiators (<code><?init?></code>), defined in another ZUML page.
  
A typical usage is that you put a set of component definitions on one ZUML page, and then import them in other ZUML pages, such that both zul pages share the same set of component definitions, additional to the system default.
+
A typical usage is that you put a set of component definitions on one ZUML page, and then import them into another ZUML page, such that both zul pages share the same set of component definitions, additional to the system default.
  
 
<source lang="xml" >
 
<source lang="xml" >
Line 58: Line 59:
 
Notes
 
Notes
  
* Unlike other directives, the import directives must be at the topmost level, i.e., at the the same level as the root element.
+
* Unlike other directives, the import directives must be at the topmost level, i.e., at the same level as the root element.
 
* The imported directives in the imported page are also imported. For example, if A imports B and B imports C, then A imports both C and B component definitions. If there is a name conflict, A overrides B, while B overrides C.
 
* The imported directives in the imported page are also imported. For example, if A imports B and B imports C, then A imports both C and B component definitions. If there is a name conflict, A overrides B, while B overrides C.
* Once the directives are imported, they won't be changed until the importing page is change, no matter the imported page is changed or not.
+
* Once the directives are imported, they won't be changed until the importing page is changed, no matter the imported page is changed or not.
  
 
= class =
 
= class =
Line 74: Line 75:
 
= directives =
 
= directives =
 
  [Optional]
 
  [Optional]
 +
default: component, init, import
  
 
If the <code>directives</code> attribute is omitted, only the <code>component</code>, <code>init</code> and <code>import</code> (with class) directives are imported. If you want to import particular directives, you can specify a list of the names of the directives separated by comma. For example,
 
If the <code>directives</code> attribute is omitted, only the <code>component</code>, <code>init</code> and <code>import</code> (with class) directives are imported. If you want to import particular directives, you can specify a list of the names of the directives separated by comma. For example,
Line 82: Line 84:
 
</source>
 
</source>
  
The directives that can be imported include <code>component</code>, <code>init</code>, <code>meta</code>, <code>taglib</code>, <code>variable-resolver</code>, and <code>xel-method</code>. If you want to import them all, specify * to the <code>directives</code> attribute. Notice that <code>meta</code> implies both the <code>meta</code>, <code>link</code> and <code>script</code> directives.
+
The directives that can be imported include <code>component</code>, <code>init</code>, <code>meta</code>, <code>taglib</code>, <code>variable-resolver</code>, and <code>xel-method</code>. If you want to import them all, specify <code>*</code> to the <code>directives</code> attribute. Notice that <code>meta</code> implies both the <code>meta</code>, <code>link</code> and <code>script</code> directives.
  
 
=Version History=
 
=Version History=

Revision as of 03:29, 10 May 2022


Import Classes

Syntax

<?import class-name1 class-name2 ?>

Since 6.0.0

It imports a class or a package of classes. It works like Java's import statement. For example,

<?import com.foo.composer.FooComposer?>
<?import com.foo.init.*?>

<?init class="FooInit"?><!-- it will look for com.foo.init.FooInit  -->
<window apply="FooComposer"><!-- com.foo.composer.FooComposer will be used -->
...

Since 8.0.0

After import, we can invoke the static method or field defined in imported class with el statement. For example,

<?import com.foo.FooClass ?>
<!-- or we can import com.foo.* -->
<label value="${FooClass.staticMethod()}"></label>
<label value="${FooClass.staticField}"></label>

Import Directives

Syntax to Import Directives

<?import src="..."?>
<?import src="..." directives="..."?>

It imports the directives, such as component definitions (<?component?>) and initiators (<?init?>), defined in another ZUML page.

A typical usage is that you put a set of component definitions on one ZUML page, and then import them into another ZUML page, such that both zul pages share the same set of component definitions, additional to the system default.

 <!-- special.zul: Common Definitions -->
 <?init zscript="/WEB-INF/macros/special.zs"?>
 <?component name="special" macroURI="/WEB-INF/macros/special.zuml" class="Special"?>
 <?component name="another" macroURI="/WEB-INF/macros/another.zuml"?>

Where the Special class is assumed to be defined in /WEB-INF/macros/special.zs.

Then, other ZUML pages can share the same set of component definitions as follows.

 <?import src="special.zul"?>
 ...
 <special/><!-- you can use the component defined in special.zul -->

Notes

  • Unlike other directives, the import directives must be at the topmost level, i.e., at the same level as the root element.
  • The imported directives in the imported page are also imported. For example, if A imports B and B imports C, then A imports both C and B component definitions. If there is a name conflict, A overrides B, while B overrides C.
  • Once the directives are imported, they won't be changed until the importing page is changed, no matter the imported page is changed or not.

class

[Required if importing a class]

The name of a class, or a wildcard, such as com.foo.app.*.

src

[Required if importing directives]

The URI of a ZUML page which the component definitions will be imported from.

directives

[Optional]
default: component, init, import

If the directives attribute is omitted, only the component, init and import (with class) directives are imported. If you want to import particular directives, you can specify a list of the names of the directives separated by comma. For example,

 <?import src="/template/taglibs.zul" directives="taglib, xel-method"?>
 <?import src="/template/java.zul" directives="import"?><!-- only <?import class="..."?> -->

The directives that can be imported include component, init, meta, taglib, variable-resolver, and xel-method. If you want to import them all, specify * to the directives attribute. Notice that meta implies both the meta, link and script directives.

Version History

Version Date Content
6.0.0 July, 2011 The import of classes was introduced.



Last Update : 2022/05/10

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