Your Own ZUL Components
JSP technology lets you define custom tags by writing JSP fragments in a separated file. In a similar way, you can create new ZUL components by encapsulating pieces of ZUL or ZHTML code into a file. Then you can import such definitions to your own page, name them by some alias, and use them in the same way as standard ZUL components. Similar to JSP custom tags, you can pass parameters to a component defined in such a way by setting up attributes of the tag. These parameters are available in the code of the componentas variables with the same names as the attributes, but preceded by the prefix arg. Listing Twelve is a ZHTML example component, while Listing Thirteen (available online) shows its use on a ZUL page.
Integration with HTML, JSP, and JSF
ZUL code can be easily merged with HTML; for instance, to arrange ZUL controls with the help of HTML tables, or to use specific functionality such as sending e-mails from web pages. There are two methods for mixing together ZUL and HTML code. First, XHTML tags can be embedded into ZUL documents after declaring their appropriate namespace (see Listing Fourteen; available online). The second technique relies on using a special ZUL <html> tag and with a fragment of HTML pasted in as its content (Listing Fifteen, available online).
Today's applications are usually built using many different technologies. ZUL pages allow easy integration with the existing code of the view layer, created via JSP or JSF. This is possible by applying <include> tags on JSP pages, which incorporate ZUL fragments; for example:
<jsp:include page="/my/embedded.zul"/>
ZUL pages can also include other resources served by a web container, such as servlets, JSP or JSF pages, or other ZULs or richlets. This is also accomplished by applying the <include> tag:
<include src="/my/servlet"/>
Integration with External AJAX Components
Several open-source packages supporting the creation of advanced web interfaces are distributed with the ZK framework. Among them are an interface for Google Maps, JFreeChart (for generating advanced diagrams), the HTML graphic FCKEditor, and a border layout manager from the Ext JS library. They are integrated with the framework by being wrapped in ZUL tags. Listing Sixteen (available online) is an example of creating data presentations with the help of the <chart> tag, which gives access to JFreeChart functionality.
Conclusion
ZK seems to be one of the more interesting frameworks to come along and make web programming easier. Its strong suite includes browser interoperability, an event-handling paradigm, MDI functionality, and a set of neat standard controls. And, according to test results, its performance looks decent. Emerging features include a ZK client for mobile devices and an expected Eclipse plug-in for the graphic design of ZULs. Lastly, ZK is intuitive and easy to use.
Among the disadvantages, there is incomplete support for keyboard navigation over a GUI (for instance, for a menu component) and occasional problems with the localization of standard messages hidden in JavaScript files.