Markup Language or Pure Java
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.
ZK User Interface Markup Language (ZUML)
The ZK User Interface Markup Language (ZUML) is based on XML. You can use it to layout the GUI components for ZK application. For fast prototype, you can write java code inside it as zscript
. Therefore you can handle events inside it. Please refer to The zk user interface markup language.
GUI component
Tags in ZUML represent GUI components of ZK, such as button
and textbox
. For tags <xxxx>
which appear in *.zul, most of their tag names xxxx
refer to corresponding ZK GUI components. For example <window/>
, <hbox/>
, <label>
. You can visit javadoc for GUI components to see components ZK has.
UI and event handler
In most cases, developers use ZUML to layout UI components like button
and textbox
. When an event occurs in the UI, ZK will automatically notify the server and trigger the relevant event handler (written in Java). From that point, you can do anything you can do in Java, as required, including step-by-step debugging, connecting to a database, or using 3rd party Java libraries/frameworks.
How ZUML and Java work together
For best practice, ZUML takes care of UI layout, and Java takes care of everything else.
Actually, you can write java code in ZUML, which is called zscript
. And you can add/remove GUI component in pure java file too. To the extreme, you can do everything using only ZUML, or using only Java. However, using only ZUML, you'll lack the ability of step-by-step debugging. It will also entangle views with codes, which will be hard to maintain. On the other hand, using only java, it's tedious to write codes to create component and to append it to DOM tree.
The Role of Java
Event handling
For event handling, you can write java code in zscript
in ZUML for fast prototyping. Or like the example located here you can write event handling code in pure java file. ZUML has attributes use
and apply
for certain usage,[1]
Define UI component programmatic
For UI components, you can define UI components like button
or textbox
in ZUML, or dynamically add UI components in Java codes. After all, ZK has a java class for each UI component. As the example located here, when you click the button
, it appends a label
component to the window
as a child.
evt.getTarget().appendChild(new Label("Hello"));
In extreme cases, you can also write all UI components in Java without ZUML. [2]
Java is executed at server, call 3rd party library as you like
All Java code, whether implemented in zscript in ZUML, or in java file, is executed at server side. Therefore, you can fully utilize any java library as you like. The client side browser only gets the rendered html content and ZK client engine written in java script.[3]
Note