Component Properties"
m (remove empty version history (via JWB)) |
|||
(17 intermediate revisions by 3 users not shown) | |||
Line 2: | Line 2: | ||
__TOC__ | __TOC__ | ||
− | With [[ZK | + | With [[ZK Client-side Reference/Language Definition/component|component definitions]], we could specify the initial values for the properties, attributes and annotations of a component. |
=Properties= | =Properties= | ||
− | Depending on the requirement, you could change the initial value of a property for a particular ZUML document | + | Depending on the requirement, you could change the initial value of a property for a particular ZUML document or for the whole application. |
− | Notice the initial values are applicable only to the component instantiated by ZK Loaders. It has no effect if you instantiate it in pure Java (unless you invoke <javadoc method="applyProperties()" type="interface">org.zkoss.zk.ui.Component</javadoc> after instantiating a component). | + | Notice that the initial values are applicable only to the component instantiated by ZK Loaders. It has no effect if you instantiate it in pure Java (unless you invoke <javadoc method="applyProperties()" type="interface">org.zkoss.zk.ui.Component</javadoc> after instantiating a component). |
==Page-wide Initialization== | ==Page-wide Initialization== | ||
− | Suppose we want to assign < | + | Suppose we want to assign <code>normal</code> to the border property (<javadoc method="setBorder(java.lang.String)">org.zkoss.zul.Window</javadoc>) of all windows in a ZUML document, then we could use [[ZUML Reference/ZUML/Processing Instructions/component|the component directive]] as follows. |
<source lang="xml"> | <source lang="xml"> | ||
Line 17: | Line 17: | ||
</source> | </source> | ||
− | ==Application- | + | ==Application-wide Initialization== |
− | If you prefer to have the same initial value for all ZUML documents, you could specify it in [[ZK | + | If you prefer to have the same initial value for all ZUML documents, you could specify it in [[ZK Client-side Reference/Language Definition|a language addon]]. For example, we could prepare a file called <code>WEB-INF/lang-addon.xml</code> with the following content: |
<source lang="xml"> | <source lang="xml"> | ||
<language-addon> | <language-addon> | ||
+ | <addon-name>myapp</addon-name> | ||
+ | <language-name>xul/html</language-name> | ||
<component> | <component> | ||
<component-name>window</component-name> | <component-name>window</component-name> | ||
Line 34: | Line 36: | ||
</source> | </source> | ||
− | Then, we could specify this file by adding the following content to < | + | Then, we could specify this file by adding the following content to <code>WEB-INF/zk.xml</code>: |
<source lang="xml"> | <source lang="xml"> | ||
Line 45: | Line 47: | ||
=Molds= | =Molds= | ||
+ | |||
+ | A mold is yet another property (<javadoc method="setMold(java.lang.String)" type="interface">org.zkoss.zk.ui.Component</javadoc>), so you could change the initial value as described in the previous section. However, since it is common to change the value, we allow developers to specify the mold for a given component in a library property. As shown, the library is named as <code>''ClassName''.mold</code>. For example, if you would like to specify <code>trendy</code> as the initial mold of a button, then you could add the following to <code>WEB-INF/zk.xml</code>: | ||
+ | |||
+ | <source lang="xml"> | ||
+ | <library-property> | ||
+ | <name>org.zkoss.zul.Button.mold</name> | ||
+ | <value>trendy</value> | ||
+ | </library-property> | ||
+ | </source> | ||
+ | |||
=Attributes= | =Attributes= | ||
− | Like properties, you could | + | Like properties, you could assign an attribute's initial value for a given component in the whole application (like calling [https://www.zkoss.org/javadoc/latest/zk/org/zkoss/zk/ui/ext/Scope.html#setAttribute(java.lang.String,%20java.lang.Object,%20boolean) Component.setAttribute()]). |
+ | |||
+ | Notice that the initial values are applicable only to the component instantiated by ZK Loaders. It has no effect if you instantiate it in pure Java (unless you invoke <javadoc method="applyProperties()" type="interface">org.zkoss.zk.ui.Component</javadoc> after instantiating a component). | ||
− | |||
==Page-wide Initialization== | ==Page-wide Initialization== | ||
− | ==Application- | + | |
− | + | Unlike the initial value of a property, there is no way to specify the initial value of a custom attribute in a ZUML document. | |
− | + | ||
− | + | ==Application-wide Initialization== | |
− | + | ||
− | + | Similar to customizing the initial value of a property, you could specify the following in [[ZK Client-side Reference/Language Definition|a language addon]] to assign an initial value of a attribute to a component. | |
− | + | ||
− | + | <source lang="xml"> | |
− | + | <language-addon> | |
− | + | <addon-name>myapp</addon-name> | |
+ | <language-name>xul/html</language-name> | ||
+ | <component> | ||
+ | <component-name>panel</component-name> | ||
+ | <extends>panel</extends> | ||
+ | <custom-attribute> | ||
+ | <attribute-name>any.attribute.name</attribute-name> | ||
+ | <attribute-value>any.value</attribute-value> | ||
+ | </custom-attribute> | ||
+ | </component> | ||
+ | </language-addon> | ||
+ | </source> | ||
+ | |||
+ | |||
{{ZKDevelopersReferencePageFooter}} | {{ZKDevelopersReferencePageFooter}} |
Latest revision as of 04:33, 5 February 2024
With component definitions, we could specify the initial values for the properties, attributes and annotations of a component.
Properties
Depending on the requirement, you could change the initial value of a property for a particular ZUML document or for the whole application.
Notice that the initial values are applicable only to the component instantiated by ZK Loaders. It has no effect if you instantiate it in pure Java (unless you invoke Component.applyProperties() after instantiating a component).
Page-wide Initialization
Suppose we want to assign normal
to the border property (Window.setBorder(String)) of all windows in a ZUML document, then we could use the component directive as follows.
<?component name="window" extends="window" border="normal"?>
<window title="Border"/>
Application-wide Initialization
If you prefer to have the same initial value for all ZUML documents, you could specify it in a language addon. For example, we could prepare a file called WEB-INF/lang-addon.xml
with the following content:
<language-addon>
<addon-name>myapp</addon-name>
<language-name>xul/html</language-name>
<component>
<component-name>window</component-name>
<extends>window</extends>
<property>
<property-name>border</property-name>
<property-value>normal</property-value>
</property>
</component>
</language-addon>
Then, we could specify this file by adding the following content to WEB-INF/zk.xml
:
<language-config>
<addon-uri>/WEB-INF/lang-addon.xml</addon-uri>
</language-config>
For more information, please refer to ZK Configuration Reference.
Molds
A mold is yet another property (Component.setMold(String)), so you could change the initial value as described in the previous section. However, since it is common to change the value, we allow developers to specify the mold for a given component in a library property. As shown, the library is named as ClassName.mold
. For example, if you would like to specify trendy
as the initial mold of a button, then you could add the following to WEB-INF/zk.xml
:
<library-property>
<name>org.zkoss.zul.Button.mold</name>
<value>trendy</value>
</library-property>
Attributes
Like properties, you could assign an attribute's initial value for a given component in the whole application (like calling Component.setAttribute()).
Notice that the initial values are applicable only to the component instantiated by ZK Loaders. It has no effect if you instantiate it in pure Java (unless you invoke Component.applyProperties() after instantiating a component).
Page-wide Initialization
Unlike the initial value of a property, there is no way to specify the initial value of a custom attribute in a ZUML document.
Application-wide Initialization
Similar to customizing the initial value of a property, you could specify the following in a language addon to assign an initial value of a attribute to a component.
<language-addon>
<addon-name>myapp</addon-name>
<language-name>xul/html</language-name>
<component>
<component-name>panel</component-name>
<extends>panel</extends>
<custom-attribute>
<attribute-name>any.attribute.name</attribute-name>
<attribute-value>any.value</attribute-value>
</custom-attribute>
</component>
</language-addon>