Annotate ZUML Pages
This documentation is for an older version of ZK. For the latest one, please click here.
This documentation is for an older version of ZK. For the latest one, please click here.
Annotations can be applied to declarations of components and properties in ZUML pages. There are two way to annotate them: the classic way and the simple way. Which one to use depends on your favorite. You can mix them in the same page if you like.
The Simple Way to Annotate the Property Declarations
In addition to annotating with the special XML namespace as described above, there is a simple way to annotate properties: specify a value with an annotation expression for the property to annotate, as show below.
<listitem label="@{bind(datasource='author',selected)}"/>
The format of the annotation expression is @{annot-name(attr-name1=attr-value1, attr-name2=attr-value2)}. In other words, if the value of the property is an annotation expression, it is considered as the annotation for the corresponding property, rather than its value. In the above example, an annotation called bind is annotated to the label property. Thus, it is equivalent to
<listitem a:bind=" datasource='author',selected" label=""/>
If the annotation name is not specified, the name is assumed to be default. For example, the following code snippet annotates the label property with an annotation named default, and the annotation has one attribute whose name and value are value and selected.name, respectively.
<listitem label="@{selected.name}"/>
In other words, it is equivalent to the following code snippet.
<listitem label="@{default(value='selected.name')}"/>
Note: you can annotate the same property with multiple annotations, as shown below.
<listitem label="@{ann1(selected.name) ann2(attr2a='attr2a',attr2b)}"/>
The Simple Way to Annotate the Component Declarations
Similarly, you can annotate a component by specifying the annotation expression to a specific attribute called self as shown below.
<listitem self="@{bind(each=person)}"/>
where self is a keyword to denote the annotation is used to annotate the component declaration, rather than any property. In other words, it is equivalent to
<a:bind each="person"/>
<listitem/>