Vous êtes sur la page 1sur 125

ZK Configuration Reference

For ZK 5

PDF generated using the open source mwlib toolkit. See http://code.pediapress.com/ for more information.
PDF generated at: Mon, 13 Feb 2012 03:13:27 CST

Contents
Articles
ZK Configuration Reference
web.xml

1
1

ZK Loader

ZK AU Engine

ZK Session Cleaner

ZK Filter

DSP Loader

Sample of web.xml

zk.xml
The client-config Element

10
11

The debug-js Element

12

The disable-behind-modal Element

13

The error-reload Element

13

The keep-across-visits Element

15

The package Element

16

The processing-prompt-delay Element

17

The resend-delay Element

17

The tooltip-delay Element

18

The desktop-config Element

18

The desktop-timeout Element

19

The disable-theme-uri Element

19

The extendlet-check-period Element

20

The file-check-period Element

20

The repeat-uuid Element

21

The theme-uri Element

21

The theme-provider-class Element

22

The device-config Element

23

The device-class Element

24

The device-type Element

24

The embed Element

25

The server-push-class Element

26

The unavailable-message Element

27

The error-page Element

27

The language-config Element

28

The library-property Element

29

The Library Properties

30

class.mold

30

org.zkoss.util.label.classpath.charset

31

org.zkoss.util.label.web.charset

31

org.zkoss.util.label.web.location

32

org.zkoss.util.logging.config.file

32

org.zkoss.util.logging.hierarchy.disabled

33

org.zkoss.util.logging.realCauseBriefly

33

org.zkoss.web.classWebResource.cache

34

org.zkoss.web.classWebResource.cache.CSS.hours

34

org.zkoss.web.classWebResource.cache.etag

35

org.zkoss.web.util.resource.dir

35

org.zkoss.web.servlet.http.URLEncoder

36

org.zkoss.zk.config.path

36

org.zkoss.zk.scripting.bsh.method.serializable

37

org.zkoss.zk.ui.composer.autowire.zscript

38

org.zkoss.zk.ui.composer.autowire.xel

39

org.zkoss.zk.ui.EmulateIE7

39

org.zkoss.zk.ui.event.EventQueueProvider.class

40

org.zkoss.zk.ui.input.grouping.allowed

40

org.zkoss.zk.ui.macro.autoforward.disabled

41

org.zkoss.zk.ui.macro.autowire.disabled

41

org.zkoss.zk.ui.metainfo.page.Loader.class

42

org.zkoss.zk.ui.uuidRecycle.disabled

43

org.zkoss.zk.ui.sys.XMLResourcesLocator.class

43

org.zkoss.zk.WPD.cache

44

org.zkoss.zkmax.zul.FiledownloadListener.class

44

org.zkoss.zul.borderlayout.animation.disabed

45

org.zkoss.zul.client.rod

45

org.zkoss.zul.include.mode

46

org.zkoss.zul.grid.autoSort

46

org.zkoss.zul.grid.preloadSize

47

org.zkoss.zul.grid.initRodSize

48

org.zkoss.zul.listbox.checkmarkDeselectOthers

48

org.zkoss.zul.listbox.rightSelect

49

org.zkoss.zul.listbox.groupSelect

50

org.zkoss.zul.listbox.autoSort

50

org.zkoss.zul.listbox.preloadSize

51

org.zkoss.zul.listbox.initRodSize

52

org.zkoss.zul.numberFormat

52

org.zkoss.zul.progressbox.position

53

org.zkoss.zul.theme.browserDefault

54

org.zkoss.zul.theme.fontFamilyC

54

org.zkoss.zul.theme.fontFamilytT

54

org.zkoss.zul.theme.fontSizeM

55

org.zkoss.zul.theme.fontSizeMS

55

org.zkoss.zul.theme.fontSizeS

55

org.zkoss.zul.theme.fontSizeXS

56

org.zkoss.zul.tree.checkmarkDeselectOthers

56

org.zkoss.zul.tree.rightSelect

57

org.zkoss.zul.tree.autoSort

57

The listener Element

58

The org.zkoss.zk.ui.event.EventThreadCleanup interface

58

The org.zkoss.zk.ui.event.EventThreadInit Interface

59

The org.zkoss.zk.ui.event.EventThreadResume interface

60

The org.zkoss.zk.ui.event.EventThreadSuspend interface

61

The org.zkoss.zk.ui.util.Composer interface

61

The org.zkoss.zk.ui.util.DesktopCleanup interface

62

The org.zkoss.zk.ui.util.DesktopInit interface

63

The org.zkoss.zk.ui.util.EventInterceptor interface

63

The org.zkoss.zk.ui.util.ExecutionCleanup interface

64

The org.zkoss.zk.ui.util.ExecutionInit interface

64

The org.zkoss.zk.ui.util.Initiator interface

65

The org.zkoss.zk.ui.util.Monitor interface

66

The org.zkoss.zk.ui.util.PerformanceMeter interface

66

The org.zkoss.zk.ui.util.RequestInterceptor interface

67

The org.zkoss.zk.ui.util.SessionCleanup interface

68

The org.zkoss.zk.ui.util.SessionInit interface

68

The org.zkoss.zk.ui.util.UiLifeCycle interface

69

The org.zkoss.zk.ui.util.URIInterceptor interface

69

The org.zkoss.zk.ui.util.WebAppCleanup interface

70

The org.zkoss.zk.ui.util.WebAppInit interface

70

The org.zkoss.zk.ui.sys.PropertiesRenderer interface

71

The org.zkoss.zk.ui.sys.SEORenderer interface

72

The org.zkoss.xel.VariableResolver Interface

73

The log Element

74

The preference Element

74

The Preferences

75

org.zkoss.zk.ui.WebApp.name

76

The richlet Element

77

The richlet-mapping Element

78

The xel-config Element

79

The session-config Element

80

The automatic-timeout Element

80

The device-type Element

81

The max-desktops-per-session Element

82

The max-pushes-per-session Element

82

The max-requests-per-session Element

83

The session-timeout Element

83

The timeout-message Element

84

The timeout-uri Element

85

The timer-keep-alive Element

86

The system-config Element

87

The au-decoder-class Element

88

The au-writer-class Element

89

The cache-provider-class Element

90

The config-parser-class Element

91

The crawlable Element

91

The disable-event-thread Element

92

The disable-zscript Element

92

The engine-class Element

93

The event-time-warning Element

94

The failover-manager-class Element

94

The file-size-threshold Element

95

The id-generator-class Element

95

The label-location Element

96

The max-spare-threads Element

97

The max-suspended-threads Element

97

The max-upload-size Element

98

The max-process-time Element

98

The response-charset Element

99

The session-cache-class Element

99

The upload-charset Element

100

The upload-charset-finder-class Element

100

The ui-factory-class Element

101

The web-app-class Element

102

The web-app-factory-class Element

103

The system-property Element

104

The zscript-config Element

104

JAR File's config.xml

105

Samples

106

The client-config Element

107

The config-name Element

107

The depends Element

108

The device-config Element

108

The language-config Element

109

The library-property Element

110

The listener Element

110

The preference Element

111

The system-config Element

111

The version Element

112

The zscript-config Element

113

References
Article Sources and Contributors

114

Image Sources, Licenses and Contributors

119

ZK Configuration Reference

ZK Configuration Reference
Documentation:Books/ZK_Configuration_Reference
If you have any feedback regarding this book, please leave it here.
<comment>http://books.zkoss.org/wiki/ZK_Configuration_Reference</comment>

web.xml
To add ZK a Web application, you have to add servlets, listeners and an optional filter to web.xml.

ZK Loader
DHtmlLayoutServlet
Location: WEB-INF/web.xml
[Required] Class: DHtmlLayoutServlet [1]
ZK Loader is a servlet used to load ZUML pages when the Web server receives URL requests sent by the users.
Notice that you must specify load-on-startup since many other servlets depend on the ZK loader.
<load-on-startup>1</load-on-startup>
Here is a complete sample.

The Initial Parameters


init-param

Descriptions

update-uri [Required]
It specifies the URI which the ZK AU engine is mapped to.
For example, if the ZK AU engine is mapped to /zkau/*, by the use of servlet-mapping, then specify /zkau for this
parameter.
Note: if the servlet container is used with other Web server, like Apache, you have to map this update URI to the servlet container (in
additions to zul and zhtml files).
compress

[Optional][Default:true]
It specifies whether to compress the output if the browser supports the compression (Accept-Encoding) and this Servlet is not
included by other Servlets.

log-level

[Optional]
It specifies the default log level for org.zkoss. If not specified, the system default (usually INFO) is used.
Possible values: OFF, ERROR, WARNING, INFO, DEBUG and FINER. Please refer to ZK Developer's Reference for details.

ZK Loader

Map URL to ZUML pages


It is suggested to map this servlet to the zul and zhtml extensions as shown below to process ZUML pages. It is
OK if you want to prefer to use xul and html as the extension; just map them to ZK Loader too.
<servlet>
<description>ZK loader for evaluating ZUML pages</description>
<servlet-name>zkLoader</servlet-name>
<servlet-class>org.zkoss.zk.ui.http.DHtmlLayoutServlet</servlet-class>
<init-param>
<param-name>update-uri</param-name>
<param-value>/zkau</param-value>
</init-param>
<load-on-startup>1</load-on-startup><!-- MUST -->
</servlet>
<servlet-mapping>
<servlet-name>zkLoader</servlet-name>
<url-pattern>*.zul</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>zkLoader</servlet-name>
<url-pattern>*.zhtml</url-pattern>
</servlet-mapping>
Here is a complete sample.

Map URL to Richlets


Assume you have a richlet named foo.FooRichlet. Then, you could configure it as follows.
First, declare the richlet:
<richlet>
<richlet-name>Foo</richlet-name>
<richlet-class>foo.FooRichlet</richlet-class>
</richlet>
Second, map the richlet to any number of URL you want:
<richlet-mapping>
<richlet-name>Foo</richlet-name>
<url-pattern>/foo</url-pattern>
</richlet-mapping>
<richlet-mapping>
<richlet-name>Fest</richlet-name>
<url-pattern>/some/more/*</url-pattern>
</richlet-mapping>
Notice that, by default, richlets are disabled. To enable them, add the following declaration to web.xml. Once
enabled, you can add as many as richlets as you want without modifying web.xml any more. Of course, url-pattern
could be any pattern you prefer.

ZK Loader

<servlet-mapping>
<servlet-name>zkLoader</servlet-name>
<url-pattern>/zk/*</url-pattern><!-- any pattern you prefer -->
</servlet-mapping>
Then, you can visit http://localhost:8080/PROJECT_NAME/zk/foo [2] to request the richlet.
The URL specified in the url-pattern element must start with /. If the URI ends with /*, then it is matched to
all request with the same prefix. To retrieve the request's actual URL, you can check the value returned by the
Page.getRequestPath [3].

Version History
Version

Date

Content

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ http/ DHtmlLayoutServlet. html#
[2] http:/ / localhost:8080/ PROJECT_NAME/ zk/ test
[3] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ Page. html#getRequestPath

ZK AU Engine
DHtmlUpdateServlet
[Required] Class: DHtmlUpdateServlet

[1]

ZK AU Engine, aka., ZK Update Engine, is a servlet that handles AJAX requests asynchronously and automatically.
Notice that the URL pattern mapped to this engine must be consistent with the update-uri parameter of ZK
Loader.
Here is a complete sample.

The Initial Parameters


init-param
compress

Descriptions
[Optional][Default:true][since 3.6.3]
It specifies whether to compress the output of this Servlet, if the browser supports the compression (Accept-Encoding). Notice that
it affects no only the AU response, but also JavaScript and CSS files loaded from this Servlet.

ZK AU Engine

extension0 [Optional] [since 5.0]


extension1 It specifies an AU extension The first processor must be specified with the name called extension0, second extension1 and so
extension2 on.
...

The syntax of the value is


/prefix=class
For example,

<init-param>
<param-name>extension0</param-name>
<param-value>/upload=com.super.MyUploader</param-value>
</init-param>
<init-param>
<param-name>extension1</param-name>
<param-value>/extra=com.super.MyExtra</param-value>
</init-param>
The class must implement the AuExtension

[2]

interface.

Map URL to ZK AU Engine


Mapping URL to ZK AU Engine is straightforward:
<servlet>
<servlet-name>auEngine</servlet-name>
<servlet-class>org.zkoss.zk.au.http.DHtmlUpdateServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>auEngine</servlet-name>
<url-pattern>/zkau/*</url-pattern>
</servlet-mapping>
Notice that the URL pattern mapped to this engine must be consistent with the update-uri parameter of ZK
Loader.
Here is a complete sample.

Version History
Version
5.0.0

Date
07/14/10

Content
processor0, processor1, processor2 parameters have been depreciated.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ au/ http/ DHtmlUpdateServlet. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ au/ http/ AuExtension. html#

ZK Session Cleaner

ZK Session Cleaner
HttpSessionListener
[Required] Class: HttpSessionListener

[1]

ZK Session Cleaner is a listener used to clean up memory when a HTTP session is destroyed.
If you are using Servlet 2.3, please use HttpSessionListener23 [2] instead.

<listener>
<description>ZK listener for cleanup when a session is destroyed</description
<listener-class>org.zkoss.zk.ui.http.HttpSessionListener</listener-class>
</listener>

Version History
Version

Date

Content

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ http/ HttpSessionListener. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ http/ HttpSessionListener23. html#

ZK Filter
DHtmlLayoutFilter
[Optional] Class: DHtmlLayoutFilter

[1]

ZK Filter is a filter to post-process the output generated by other servlets, such as JSP pages. Its role is similar to the
ZK Loader. Unlike the ZK Loader, which loads static ZUML pages from Web applications directly, the ZK filter is
designed to process dynamic pages generated by other servlets, say JSP or JSF. It enables developers to add rich user
interfaces to existent servlets written in any technology.
Note: the output must be in XHTML (or ZUML) syntax. If you encounter any problem, you can save the generated
output into a ZHTML page and then browse the URL whether the ZHTML page is stored.

The Initial Parameters

ZK Filter

init-param
extension

Descriptions
[Optional][Default: html]
It specifies how to process the response generated by other servlets.
If html or zhtml, XHTML is assumed to be the default namespace. If xul or zul, XUL is assumed to be the default namespace.

charset

[Optional][Default: UTF-8]
It specifies the default charset for the output of this filter.
If an empty string is specified as follows, the container's default is used. In other words, the setCharacterEncoding method of
javax.servlet.ServletResponse is not called.
<param-value></param-value>

compress

[Optional][Default: true]
It specifies whether to compress the output if the browser supports the compression (Accept-Encoding) and this filter is not
included by other Servlets.

Map URL to ZK Filter


ZK Filter can be mapped to any servlet or JSP page you want. For example,
<filter>
<filter-name>zkFilter</filter-name>
<filter-class>org.zkoss.zk.ui.http.DHtmlLayoutFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>zkFilter</filter-name>
<url-pattern>/foo/whatever.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>zkFilter</filter-name>
<url-pattern>/foo2/*</url-pattern>
</filter-mapping>

Version History
Version

Date

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ http/ DHtmlLayoutFilter. html#

Content

DSP Loader

DSP Loader
InterpreterServlet
[Optional] Class: InterpreterServlet

[1]

DSP Loader is a servlet used to process the DSP files. DSP is a JSP-like template technology.
It is optional. You need to specify it only if you have DSP pages in your Web application.
It takes the same syntax as that of JSP. Unlike JSP, DSP is interpreted at the run time, so it is easy to deploy DSP
pages. No Java compiler is required in your run-time environment. In addition, you could distribute DSP pages in jar
files. This is the way ZK is distributed.
However, you cannot embed Java codes in DSP pages. Actions of DSP, though extensible through TLD files, are
different from JSP tags.

The Initial Parameters


init-param
charset

Descriptions
[Optional][Default: UTF-8]
It specifies the default charset for the output of the DSP interpreter.
If an empty string is specified as follows, the container's default is used. In other words, the setCharacterEncoding method
of javax.servlet.ServletResponse is not called.

class-resource [Optional][Default: false]


Specifies whether to load resources, such as TLD files, from the class loader, in addition to the servlet context.
compress

[Optional][Default: true]
It specifies whether to compress the output if the browser supports the compression (Accept-Encoding) and this Servlet is not
included by other Servlets.

Map URL to DSP Loader


Notice it is optional. You need to specify it only if you want to use DSP pages (*.dsp) in your Web application.
<servlet>
<servlet-name>zkLoader</servlet-name>
<servlet-class>org.zkoss.web.servlet.dsp.InterpreterServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dspLoader</servlet-name>
<url-pattern>*.dsp</url-pattern>
</servlet-mapping>

DSP Loader

Version History
Version

Date

Content

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ web/ servlet/ dsp/ InterpreterServlet. html#

Sample of web.xml
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<!-- //// -->


<!-- ZK -->
<listener>
<description>ZK listener for cleanup when a session is destroyed</description
<listener-class>org.zkoss.zk.ui.http.HttpSessionListener</listener-class>
</listener>
<servlet>
<description>ZK loader for evaluating ZUML pages</description>
<servlet-name>zkLoader</servlet-name>
<servlet-class>org.zkoss.zk.ui.http.DHtmlLayoutServlet</servlet-class>
<!-Must. Specifies URI of the update engine
(DHtmlUpdateServlet). It
must be the same as <url-pattern> for the update engine.
-->
<init-param>
<param-name>update-uri</param-name>
<param-value>/zkau</param-value>
</init-param>
<load-on-startup>1</load-on-startup><!-- MUST -->
</servlet>
<servlet-mapping>
<servlet-name>zkLoader</servlet-name>
<url-pattern>*.zul</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>zkLoader</servlet-name>
<url-pattern>*.zhtml</url-pattern>
</servlet-mapping>
<servlet>
<description>The asynchronous update engine for ZK</description>

Sample of web.xml

<servlet-name>auEngine</servlet-name>
<servlet-class>org.zkoss.zk.au.http.DHtmlUpdateServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>auEngine</servlet-name>
<url-pattern>/zkau/*</url-pattern>
</servlet-mapping>
<!-- //// -->
<!-- MIME mapping -->
<mime-mapping>
<extension>gif</extension>
<mime-type>image/gif</mime-type>
</mime-mapping>
<mime-mapping>
<extension>html</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>htm</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jad</extension>
<mime-type>text/vnd.sun.j2me.app-descriptor</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jpeg</extension>
<mime-type>image/jpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jpg</extension>
<mime-type>image/jpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>js</extension>
<mime-type>application/x-javascript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>png</extension>
<mime-type>image/png</mime-type>
</mime-mapping>
<mime-mapping>
<extension>txt</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>

Sample of web.xml

10

<extension>xml</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>zhtml</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>zul</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<welcome-file-list>
<welcome-file>index.zul</welcome-file>
<welcome-file>index.zhtml</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
</web-app>

Version History
Version

Date

Content

zk.xml
WEB-INF/zk.xml is the configuration descriptor of ZK. This file optional. If you need to configure ZK differently
from the default, you could provide a file called zk.xml under the WEB-INF directory.
The root element must be <zk>. Then, you could specify any combination of the following element under the root
element.

File Location
You can place zk.xml in either a WAR file or a JAR file.

WEB-INF/zk.xml
zk.xml is usually packed with a Web application and it should be located under WEB-INF.

metainfo/zk/zk.xml
[since 3.6.0]
For library providers, zk.xml is better to pack with a JAR file. This can be done by placing zk.xml in the metainfo/zk
directory identifiable by the classpath (i.e., in a JAR file).

Additonal Configuration File


[since 5.0.7]

zk.xml
In addition, you could specify an additional configuration file in a library or system property called
org.zkoss.zk.config.path. It is useful if some of the configuration can not be part of the WAR file (such as
depending on the deployment environment). For more information, please refer to this section.
Notice that zk.xml found in the classpath is parsed first, then WEB-INF/zk.xml, and finally the additional
configuration file. It means the additional configuration file, if any, has the highest priority, and WEB-INF/zk.xml
(since the later will overrides the previous one if conflicts).

The client-config Element


It is used to customize the behavior of ZK Client Engine. You might have multiple client-config elements in
one zk.xml.
<client-config>
<click-filter-delay>0</click-filter-delay>
<debug-js>false</debug-js>
<disable-behind-modal>false</disable-behind-modal>
<error-reload>
<device-type>ajax</device-type>
<error-code>301</error-code>
<reload-uri></reload-uri>
</error-reload>
<keep-across-visits>true</keep-across-visits>
<processing-prompt-delay>900</processing-prompt-delay>
<tooltip-delay>800</tooltip-delay>
<resend-delay>9000</resend-delay>
</client-config>

11

The debug-js Element

12

The debug-js Element


Syntax:
<debug-js>true|false</debug-js>
[Default: false]
It specifies whether to debug JavaScript files. By default, it is false and the compressed version of JavaScript files
will be loaded. They are hard to read and debug, though the footprint is much smaller.
To debug JavaScript files, you can specify it to true. Then, the original uncompressed JavaScript files will be loaded
instead.

Version History
Version

Date

Content

The disable-behind-modal Element

13

The disable-behind-modal Element


Syntax:
<disable-behind-modal>true|false</disable-behind-modal>
[Default: false]
It specifies whether to disable all elements behind the modal window at the browser. If disabled, the performance is
better.
Tip: This option can be considered as obsolete since 3.0.4. The user is almost impossible to change focus to an
element behind the modal window, without disabling them.
Note: in ZK 3.0.3 and earlier, the option is default to true.

Version History
Version

Date

Content

The error-reload Element


Syntax:
<error-reload>
[<device-type>deviceType|ajax</device-type>]
<error-code>an_error_code</error-code>
<reload-uri>an_uri</reload-uri>
[<connection-type>server-push|au</connection-type>]
</error-reload>
[Default: show an error message]
It specifies what URI to redirect the browser to. For example, if you prefer to redirect to the login page, say,
login.zul, you can specify the following in zk.xml:
<error-reload>
<device-type>ajax</device-type>
<error-code>301</error-code>
<reload-uri>/login.zul</reload-uri>
</error-reload>
<error-reload>
<device-type>ajax</device-type>
<error-code>402</error-code>
<reload-uri>/login.zul</reload-uri>
</error-reload>
<error-reload>
<device-type>ajax</device-type>
<error-code>410</error-code>

The error-reload Element


<reload-uri>/timeout.zul</reload-uri>
<connection-type>server-push</connection-type>
</error-reload>

connection-type
Optional
Default: au
Allowed: au, server-push
[Since 3.6.3]
Specifies the connection type. It can be either au or server-push. By default, it is au which are the Ajax
reqests sent by the widgets running at the client.
If you want to specify the error page for the server push (comet-based), you have to specify server-push as
shown in the example below

device-type
Optional
Default: ajax
[Since 3.6.3]
Specifies the device type. By default, it is ajax. If you want to configure for ZK Mobile, use mil.

error-code
Required
Specifies the error code, aka., the server status code; see RFC 2068.
For server-push (comet-based), there is an important error code called 410. It is received when the session is timeout
(or the serve is restarted). If you want to notify user about this, you can specify something similar to the following.
<error-reload>
<device-type>ajax</device-type>
<error-code>410</error-code>
<reload-uri>/timeout.zul</reload-uri>
<connection-type>server-push</connection-type>
</error-reload>

reload-uri
Required
Specifies the URI to reload if the specified error occurs.
If the content of reload-uri is empty, the browser simply reloads the same page again.
<reload-uri></reload-uri>
If you want to show an error message instead, specify false.
<reload-uri>false</reload-uri>

14

The error-reload Element

15

Version History
Version

Date

Content

The keep-across-visits Element


Syntax:
<keep-across-visits>true|false</keep-across-visits>
[Default: false]
It specifies whether to keep the desktop when a user reloads an URL or browses away to another URL. Since
browsers won't cache HTML pages generated by ZK, ZK removes a desktop as soon as the user reloads the URL or
browses to another URL.
However, you have to specify keep-across-visits with true, if you use the server-side cache for the
HTML pages generated by ZK. An example of the server side cache is OpenSymphony CacheFilter [1].
<client-config>
<keep-across-visits>true</keep-across-visits>
</client-config>
Notes:
You rarely need to turn on this option, since the HTML page will be reloaded by the browser. It is meaningless
not to remove the desktop at the server, unless
1. You apply a special mechanism to cache the generated HTML pages, such as OpenSymphony described
above.
2. You turn on the cacheable flag with the page directive
Don't turn on this option, if you reuse the desktops by use of DesktopRecycle [2]. After all, a desktop can be
reused only if it has been removed (and turning on this option makes a desktop stays alive).
When working with Opera, ZK always keeps the desktop (until the number of desktops exceed the allowed
maximal number), since Opera is smart enough to preserve the most updated content and always reuses the
cached page.

Version History
Version

Date

References
[1] http:/ / www. opensymphony. com/ oscache/ wiki/ CacheFilter. html
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ DesktopRecycle. html#

Content

The package Element

16

The package Element


Syntax:
<package>
<package-name>a_JS_package_name</package-name>
</package>
[Default: none]
[since 5.0.0]
It defines a client package (JavaScript) and all of its sub packages that are provided by this server. Use this
configuration if some client packages might be loaded from different servers, such as Ajax-as-a-Service.
For example, if this server provides the client packages for foo.fly.*, then the following shall be specified to
enable Ajax-as-a-Service.
<client-config>
<package>
<package-name>foo.fly</package-name>
</package>
</client-config>
See Also
Experiment on EAI, Mashup and Ajax-as-a-Service [1]

Version History
Version

Date

References
[1] http:/ / blog. zkoss. org/ index. php/ 2009/ 08/ 16/ experiment-on-eai-mashup-and-ajax-as-a-service

Content

The processing-prompt-delay Element

17

The processing-prompt-delay Element


Syntax:
<processing-prompt-delay>a_number</processing-prompt-delay>
[Default: 900]
It specifies the time, in milliseconds, to wait before prompting the user with a dialog indicating that the request is in
processing.

Version History
Version

Date

Content

The resend-delay Element


Syntax:
<resend-deplay>a_number</resend-delay>
[Default: -1[1] ]
It specifies the time, in milliseconds, to wait before resending the AU requests to the server. There are a couple of
reasons an AU request is not received by the server. For example, though rarely, Internet Explorer 6 sometimes won't
send the package at all. To ensure the reliability, ZK will abort the previous request and then resend the request, if
the specified delay expires.
[1] The default is 9000 if ZK 5.0.3 EE or prior is used.
Version

Date

Content

5.0.4

July, 2010

resend-delay is default to -1 (i.e., disabled by default) no matter ZK CE or EE.

6.0.0

November,
2011

The feature is removed and the setting has no effect, since we can't replicate IE6 issue anymore (after using a more
conservative approach to send an Ajax request)

The tooltip-delay Element

18

The tooltip-delay Element


Syntax:
<tooltip-delay>a_number</tooltip-delay>
[Default: 800]
It specifies the time, in milliseconds, to wait before popping up the tooltip when the user moves the mouse pointer
over particular UI components.

Version History
Version

Date

Content

The desktop-config Element


It is used to customize how ZK handles desktops. You might have multiple desktop-config elements in one
zk.xml.
<desktop-config>
<desktop-timeout>3600</desktop-timeout>
<disable-theme-uri>~./zul/css/zk.wcs</disable-theme-uri>
<file-check-period>5</file-check-period>
<extendlet-check-period>10</extendlet-check-period>
<theme-uri>/my/blue**.css</theme-uri>
<theme-provider-class>my.MyThemeProvider</theme-provider-class>
</desktop-config>

The desktop-timeout Element

19

The desktop-timeout Element


Syntax:
<desktop-timeout>a_number</desktop-timeout>
[Default: 3600]
It specifies the time, in seconds, between client requests before a desktop is invalidated. A negative time indicates
the desktop should never timeout.

Version History
Version

Date

Content

The disable-theme-uri Element


Syntax:
<disable-theme-uri>a_theme_uri</disable-theme-uri>
[Default: none]
It specifies what theme URI needs to be disabled. The URI should be one of the URIs generated by the current
theme. For example, the following statement disables the generation of the URIs of the default theme (since it has
only one URI: ~./zul/css/zk.wcs).
<desktop-config>
<disable-theme-uri>~./zul/css/zk.wcs</disable-theme-uri>
</desktop-config>
You rarely need it. Rather, implementing a theme provider is a more controllable alternative.
It is usually used with the theme-uri element to replace the default theme. Please refer to ZK Developer's
Reference for more details about theming and styling.

Version History
Version

Date

Content

The extendlet-check-period Element

20

The extendlet-check-period Element


Syntax:
<extendlet-check-period>a_number</extendlet-check-period>
[Default: -1 (never expired)]
It specifies the time, in seconds, to wait before checking whether a resource loaded by an extendlet is modified. An
extendlet is a processor to load the resources which are usually located in classpath, such as
~./zul/desktop.dsp.
Resources located in classpath are usually packed as a JAR file, so they are immutable and not need to check if
modified. However, in a development environment, you might still want to check out if they are deployed without
reloading the JAR files.

Version History
Version

Date

Content

The file-check-period Element


Syntax:
<file-check-perioid>a_number</file-check-period>
[Default: 5]
It specifies the time, in seconds, to wait before checking whether a file is modified. For better performance, ZK has
employed a cache to store the parsed ZUML file. The time specified here controls how often ZK checks whether a
file is modified. The larger the number the better the performance.

Version History
Version

Date

Content

The repeat-uuid Element

21

The repeat-uuid Element


Syntax:
<repeat-uuid>true|false</repeat-uuid>
[Default: false]
[Since 3.6.0]
It specifies whether to use the same UUID sequence for desktops for each reboot. By default, it is turned off so the
desktop's UUID is completely different after reboot. It helps to avoid the consistency between the browser and the
server. However, it is useful to turn this option on if you want to debug and test the application.

Version History
Version

Date

Content

The theme-uri Element


Syntax:
<theme-uri>a_theme_uri</theme-uri>
[Default: none]
It specifies the URI of an addition theme (aka., a style sheet file).
Like other URI, it accepts "*" for loading browser and Locale dependent style sheet. Please refer to ZK Developer's
Reference for more details.
You can specify any number of them-uri as follows.
<desktop-config>
<theme-uri>/my/blue**.css</theme-uri>
<theme-uri>/my/second.css</theme-uri>
</desktop-config>
If you want to replace a default theme, you have to use theme-uri with disable-theme-uri. Please refer to
ZK Developer's Reference for more information.
Notice:
1. All style sheets defined in lang.xml and lang-addon.xml are loaded, no matter this parameter is defined
or not. It is convenient for developers to override certain styles.
2. Each JAR could specify a lang-addon.xml file (under the metainfo/zk directory), so you could specify
style sheets there if you have more than one style sheets.
3. You could specify extra CSS files for individual ZUML pages by the use of the style component.

The theme-uri Element

22

Version History
Version

Date

Content

The theme-provider-class Element


Syntax:
<theme-provider-class>a_class_name</theme-provider-class>
[Default: none]
It specifies the class to provide the theme (aka., a style sheet file) URI dynamically if you want to determine the
theme based on the current user, cookie or locale. You can implement a class with the ThemeProvider [1] interface,
and specify it with the theme-provider-class element. Then, an instance of the class will be created. It will
be called each time when a desktop is rendered to the client to determine the theme URI.
Notice that the theme provider is called with all theme URIs that shall be generated (including what are specified in
theme-uri and excluding what are specified in disable-theme-uri). And, only the return collection of URIs
are actually generated. In other words, the theme provider has the highest priority.
For more information, please refer to ZK Developer's Reference.

Version History
Version

Date

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ ThemeProvider. html#

Content

The device-config Element

23

The device-config Element


It specifies a device. A device represents a client. Different clients have different implementation. Currently there are
two types: ajax and mil. They represent the Web browsers with Ajax, and the mobile device with Mobile
Interactive Language[1] . It is used to create an instance returned by the getDevice method of the Desktop
intereface.
The allowed child element is device-type
, device-class, timeout-uri,
unavailable-message. You might have multiple device-config elements in one zk.xml.

and

<device-config>
<device-type>ajax</device-type>
<device-class>my.MyAjaxDevice</device-class>
<timeout-uri>/my-timeout.zul</timeout-uri>
<server-push-class>my.ServerPush</server-push-class>
<unavailable-message><![CDATA[
<p style="color:red">Sorry, JavaScript must be enabled in order for you to use KillApp.<
]]></unavailable-message>
<embed><![CDATA[
<script type="text/javascript">
AU_progressbar = function (id, msg) {
Boot_progressbox(id, msg, 0, 0, true, true);
};
</script>
]]></embed>
</device-config>
Note: Unlike most other configurations defined in WEB-INF/zk.xml, the definitions defined in
device-config are applied to all Web applications sharing the same zk.jar. Refer to the
zscript-config element for more information.
Notes
[1] MIL is a ZK markup language used to communicate with the mobile devices.

The device-class Element

24

The device-class Element


Syntax:
<device-class>a_class_name</device-class>
[Optional]
It specifies the implementation class. The class must implement the Device [1] interface. Instead of implementing it
from scratch, you can derive from the proper implementation, such as AjaxDevice [2].
<device-config>
<device-type>ajax</device-type>
<device-class>my.MyAjaxDevice</device-class>
</device-config>

Version History
Version

Date

Content

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ device/ Device. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ device/ AjaxDevice. html#

The device-type Element


Syntax:
<device-type>a_device_type|ajax</device-type>
[Required]
It specifies the device type which the accompany elements will be applied to. The previous implementation with the
same device type will be replaced if any.
<device-config>
<device-type>ajax</device-type>
<device-class>my.MyAjaxDevice</device-class>
</device-config>

The device-type Element

25

Version History
Version

Date

Content

The embed Element


Syntax:
<embed>any_valid_fragment</embed>
[Optional][Multiple]
It specifies the content that shall be added to the output generated and sent to the client when rendering a desktop.
The syntax of the content will depend on the client. For Ajax clients, it can be any tags that can be placed inside
HTML HEAD tag, such as SCRIPT, META and others.
For example, if you want to show the progress bar in the center of the browser window, you can specify the
following in zk.xml.
<device-config>
<device-type>ajax</device-type>
<embed><![CDATA[
<script type="text/javascript">
AU_progressbar = function (id, msg) {
Boot_progressbox(id, msg, 0, 0, true, true);
};
</script>
]]></embed>
</device-config>
You can specify multiple embed elements and their content be concatenated together.

Version History
Version

Date

Content

The server-push-class Element

26

The server-push-class Element


Syntax:
<server-push-class>a_class_name</server-push-class>
[Optional][Default: depends on device and what edition you use]
It specifies which class used to implement the server-push feature. The class must have a default constructor
(without any argument), and implement the ServerPush [1] interface.
<device-config>
<device-type>ajax</device-type>
<server-push-class>my.ServerPush</server-push-class>
</device-config>
In addition to configuring the application's default implementation, you can choose an implement for a particular
class by the use of DesktopCtrl.enableServerPush(org.zkoss.zk.ui.sys.ServerPush) [2]. For example,
((DesktopCtrl)desktop).enableServerPush(new
org.zkoss.zk.ui.impl.PollingServerPush());

Version History
Version

Date

Content

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ sys/ ServerPush. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ sys/ DesktopCtrl. html#enableServerPush(org. zkoss. zk. ui. sys. ServerPush)

The unavailable-message Element

27

The unavailable-message Element


Syntax:
<unavailable-message>any_valid_fragment</unavailable-message>
[Optional][Default: depends on device]
It specifies the message that will be displayed if the client doesn't support this device.

<device-config>
<device-type>ajax</device-type>
<unavailable-message><![CDATA[
<p style="color:red">Sorry, JavaScript must be enabled in order for you to use KillApp.</
]]></unavailable-message>
</device-config>

Version History
Version

Date

Content

The error-page Element


Syntax:
<error-page>
<device-type>a_device_type|ajax</device-type>
<exception-type>a_class_name</exception-type>
<location>a_uri</location>
</error-page>
It specifies an error page used when an un-caught exception is thrown in updating a ZUML page (e.g., in an event
listener). Each page is associated with an exception type, aka, a class deriving from java.lang.Throwable.
You can specify multiple error pages, each with a different exception type. When an error occurs, ZK searches the
proper error page by examing the exception type one-by-one. If none is found, it will show an alert message at the
client by default.
The device-type element is optional. If omitted, ajax is assumed.
For example,
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/WEB-INF/sys/error.zul</location>
</error-page>
For more information, please refer to ZK Developer's Reference: Error Handling.

The error-page Element

28

Version History
Version

Date

Content

The language-config Element


Syntax:
<language-config>
<addon-uri>a_uri</addon-uri>
<language-uri>a_uri</language-uri>
</language-config>
The allowed child elements include addon-uri. You might have multiple language-config elements in one
zk.xml.
<language-config>
<addon-uri>/WEB-INF/lang-addon.xml</addon-uri>
<addon-uri>/WEB-INF/lang-addon2.xml</addon-uri>
</language-config>
Note: Unlike most other configurations defined in WEB-INF/zk.xml, the definitions defined in the language
addons are applied to all Web applications sharing the same zk.jar.
In other words, the definitions in the language addons are visible to all Web applications sharing the same zk.jar.
Furthermore, it may cause errors in another Web application, if the classes or resources are available only in the Web
application defining this.
Thus, if this has become an issue, you can just put zk.jar and relevant ZK libraries under the WEB-INF/lib
directory.

The addon-uri Element


[Default: none]
It specifies the URI of language add-on definitions. To specify more than one URIs, you have to define them with
multiple addon-uri.
A language addon is used to add new components and override the definitions of existent components. For more
information, please refer to ZK Client-side Reference: Language Definition.
For example,
<language-config>
<addon-uri>/WEB-INF/lang-addon.xml</addon-uri>
</language-config>
Then, the content of lang-addon.xml could be
<language-addon>
<addon-name>FooApplication</addon-name>
<language-name>xul/html</language-name>
</language-addon>

The language-config Element

29

The language-uri Element


[Default: none]
[since 5.0.7]
It specifies the URI of the language definition. To specify more than one URIs, you have to define them with
multiple language-uri.
A language definition is used to define a new set of components. For more information, please refer to ZK
Client-side Reference: Language Definition.

Version History
Version
5.0.7

Date
May 2011

Content
The language-uri element was introduced.

The library-property Element


Syntax:
<library-property>
<name>any name</name>
<value>any value</value>
</library-property>
Species a library-level property with the library-property element. The above example is equivalent to
org.zkoss.lang.Library.setProperty("any name", "any value");
The library properties are shared by all Java codes that use the same set of ZK libraries. If you installed ZK libraries
in WEB-INF/ib of a ZK application, the library properties can only be shared within the application.
The library properties are easier to access than preferences since they are static members (of Library [1]). However,
their scope depends on the installation. If you copy zcommon.jar to a folder that are shared by all applications, then
the library properties are shared by all applications. If you copy it to WEB-INF/lib for a particular application, then
the scope is limited to the application.
For a list of supported library properties, please take a look at Library Properties.

Version History
Version

Date

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ lang/ Library. html#

Content

The Library Properties

The Library Properties


Here is a list of supported library properties that ZK recognizes.
To define a library property, you can configure it in WEB-INF/zk.xml[1] . For example,
<library-property>
<name>org.zkoss.zul.Button.mold</name>
<value>trendy</value>
</library-property>
Alternatively, you can define it as a system property with the configuration file of your Web server, though the
system property affects the whole system, not just one Web application.
[1] For more information, please refer to the library-property element.

class.mold
Property:
class.mold
Default: none
[Since 5.0.0]
It specified the default mold of the specified component. The property name is a concatenation of the class name of
the component and mold. For example, the property for the button's default mold is called
org.zkoss.zul.Button.mold.
<library-property>
<name>org.zkoss.zul.Button.mold</name>
<value>trendy</value>
</library-property>

30

org.zkoss.util.label.classpath.charset

31

org.zkoss.util.label.classpath.charset
Property:
org.zkoss.util.label.classpath.charset
Default: UTF-8
[since 3.6.0]
It defines the charset used to encode i3-label.properties if the file is located in classpath.
To define the charset for i3-label.properties
org.zkoss.util.label.web.charset property.

located

in

Web's

resource,

please

refer

to

the

Please refer to ZK Developer's Reference: Internationalization for more information about i3-label.properties.

org.zkoss.util.label.web.charset
Property:
org.zkoss.util.label.web.charset
Default: UTF-8
[since 3.6.2]
It defines the charset used to encode i3-label.properties if the file is located in a Web application (i.e.,
WEB-INF/i3-label*.properties). Notice that all properties specified in the label-location element must be
encoded in the same encoding as specified here.
To define the charset for i3-label.properties located in classpath (i.e., part of a JAR file), please refer to the
org.zkoss.util.label.classpath.charset property.
Please refer to ZK Developer's Reference: Internationalization for more information about i3-label.properties.

org.zkoss.util.label.web.location

org.zkoss.util.label.web.location
Property:
org.zkoss.util.label.web.location
Default: /WEB-INF/i3-label.properties
[Since 3.6.2]
It specifies which properties file for the internationalization labels are named and located.
For 5.0.7 and later, it is suggested to use the label-location element instead, since it allows users to specify multiple
properties files. In addition, the lable-location element has higher priority.

org.zkoss.util.logging.config.file
Property:
org.zkoss.util.logging.config.file
Default: none
[Since 6.0.0]
It specifies the logging configuration file which is used to configure the logging of ZK internal functions. You
generally don't need it unless you'd like to know how ZK operates internally. For more information, please refer to
ZK Developer's Reference: Logger.
For example,
<library-property>
<name>org.zkoss.util.logging.config.file</name>
<value>conf/zk-log.properties</value>
</library-property>
If a relative path is specified, it will look for the class path first. If not found, it will assume it is related to the current
directory, i.e., the directory specified in the system property called user.dir.
You could specify an absolute path, such as /usr/jetty/conf/zk-log.properties, if you are not sure what the current
directory is.

32

org.zkoss.util.logging.hierarchy.disabled

org.zkoss.util.logging.hierarchy.disabled
Property:
org.zkoss.util.logging.hierarchy.disabled
Default: false
[Since 5.0.9]
It disables the use of the hierarchy hierarchical .
Notice
that
this
setting
was
introduced,
because
Googal
App
Engine
doesn't
allow
java.util.logging.LogManager, which is required if the hierarchical logging is used. For more
information, please refer to ZK Installation Guide: Google App Engine.

org.zkoss.util.logging.realCauseBriefly
Property:
org.zkoss.util.logging.realCauseBriefly
Default: 6
[Since 3.6.1]
It defines the number of lines to log an error message.
If nonpositive is specified, the full stack traces are logged. Notice that # of lines don't include packages starting with
java, javax, sun, or bsh.

33

org.zkoss.web.classWebResource.cache

org.zkoss.web.classWebResource.cache
Property:
org.zkoss.web.classWebResource.cache
Default: true
[Since 3.6.3]
It specifies whether to allow the browsers to cache so-called class Web resources[1] .
By default, it is true. It means the static class Web resources are cached in browsers if possible, unless you upgrade
ZK to a different version.
Notice the you can control the immutable period of the CSS files of class Web resources with
another property called org.zkoss.web.classWebResource.cache.CSS.hours.

If you are developing a component, it is better to turn it off (so you can force browser to load modified CSS and JS
files by pressing F5).
<library-property>
<name>org.zkoss.web.classWebResource.cache</name>
<value>false</value>
</library-property>
[1] Class Web resources are resources that can be loaded by use of "~./*".

org.zkoss.web.classWebResource.cache.CSS.hours
Property:
org.zkoss.web.classWebResource.cache.CSS.hours
Default: 8760
[Since 3.6.3]
It specifies the number of hours in that period the CSS files of class Web resources won't be changed.
By default, it is 8760 (the same as other class Web resources). Notice that the resource is reloaded. If you want to
turn off the cache of the CSS files of class Web resources, you can specify a non-positive value.
<library-property>
<name>org.zkoss.web.classWebResource.cache.CSS.hours</name>
<value>8760</value>
</library-property>

34

org.zkoss.web.classWebResource.cache.etag

org.zkoss.web.classWebResource.cache.etag
Property:
org.zkoss.web.classWebResource.cache.etag
Default: false
[Since 5.0.1]
It specifies whether to use ETag to detect and return 304 for matched resource.
If turned on, the cached resource won't be reloaded if the user presses F5 to reload.

org.zkoss.web.util.resource.dir
Property:
org.zkoss.web.util.resource.dir
Default: none
[Since 5.0.0]
It specifies a directory, where ZK will load the so-called Class-Web Resources (CWR), in addition to the class path.
CWR includes JavaScript files, CSS files, and other resources that are specified in the form of ~./xxx.
By default, ZK only searches the class path for the required CWR. By specifying a directory here, ZK will search the
directory first and then the class path. This implies that a developer can override the default behavior by providing a
file with the same name.
Notice: never put security sensitive files in the directory specified here, since they can be accessed externally.
For example, assuming that we have a JavaScript package called foo.great and we want to put it to
WEB-INF/cwr, we have to specify the following in WEB-INF/zk.xml:
<library-property>
<name>org.zkoss.web.util.resource.dir</name>
<value>/WEB-INF/cwr</value>
</library-property>
You can place zk.wpd and the required JavaScript files under the WEB-INF/cwr/js/foo/great directory.

Overriding JAR's JavaScript Files


Though rarely needed, you could still override a JavaScript file of a JAR file with this option. One example is that
you don't have to re-package zul.jar when replacing zul/inp/Textbox.js that is part of zul.jar.
Rather, you could specify this library property as described above, and place the modified version of Textbox.js
under the /WEB-INF/cwr/js/zul/inp directory. Then, ZK will load /WEB-INF/cwr/js/zul/inp/Textbox.js you placed
rather than the default one in zul.jar.
Notice that if debug-js is turned on, ZK will actually look for Textbox.src.js rather than Textbox.js in the above
example. Thus, it is suggested to put both Textbox.src.js and Textbox.js the /WEB-INF/cwr/js/zul/inp directories. In
addition, Textbox.src.js is suggested to be the readable one (for debugging purpose), while Textbox.js is the

35

org.zkoss.web.util.resource.dir
compressed one (for production purpose).

org.zkoss.web.servlet.http.URLEncoder
Property:
org.zkoss.web.servlet.http.URLEncoder
Default: javax.servlet.http.HttpServletResponse.encodeURL
[Since 5.0.0]
It specifies the class used to encode URL by including the session ID and Servlet's context path, if necessary. The
specified class must implement the URLEncoder [1] interface.
If the clients are far away from the server, you might override this class by encoding the URL of JavaScript and CSS
files with a server nearby. Thus, it could shorten the time to load a page. For more information, please refer to
Performance Tips.
In a sophisticated environment, e.g., Reverse Proxy [2], the encoded URL might have to be prefixed with some
special prefix. To do that, you can implement the URLEncoder [1] interface, and then specify the class with this
library property.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ web/ servlet/ http/ Encodes/ URLEncoder. html#
[2] http:/ / en. wikipedia. org/ wiki/ Reverse_proxy

org.zkoss.zk.config.path
Property:
org.zkoss.zk.config.path
Default: none
[since 5.0.7]
It specifies the second configuration file in addition to WEB-INF/zk.xml. This is useful if you have two or more
environments, such as testing and production. Then, you could put the different configuration into separated files and
load the required files based on the requirement.
The value could be one of the following:
A servlet path, such as /WEB-INF/config/zk-extra.xml
A file path, such as file:///home/http/zk.xml and file:///C:/test/zk.xml, if you use Windows. Notice it must start
with file://[1] .
A URL, such as http://foo.com/config/zk.xml. Notice it must starts with http://, https://, and ftp://.
Notice that WEB-INF/zk.xml is always loaded, and it is loaded before the configuration file specified in this
system property. Thus, you could put the configurations common to each environment in WEB-INF/zk.xml, and
put the difference to the extra configuration file.
For example, assume you put the configuration in a file called /configs/zk-production.xml, then you
could specify -Dorg.zkoss.zk.config.path=file:/configs/zk-production.xml as one of the
arguments when starting the Web server.

36

org.zkoss.zk.config.path

37

Another example is to provide an ID generator for the testing purpose. For more information, please refer to ZK
Developer's Reference: Testing Tips.
[1] For more information about the URI of a file, please refer to File URI scheme (http:/ / en. wikipedia. org/ wiki/ File_URI_scheme).

Version History
Version
5.0.7

Date
April, 2011

Content
Introduced

org.zkoss.zk.scripting.bsh.method.serializable
Property:
org.zkoss.zk.scripting.bsh.method.serializable
Default: true
[since 5.0.0]
To disable the serialization of BeanShell method(s).
<library-property>
<name>org.zkoss.zk.scripting.bsh.method.serializable</name>
<value>false</value>
</library-property>

Version History
Version

Date

Content

org.zkoss.zk.ui.composer.autowire.zscript

38

org.zkoss.zk.ui.composer.autowire.zscript
Property:
org.zkoss.zk.ui.composer.autowire.zscript
Default: true (it is default to false in 6.0)
[since 5.0.6]
It specifies whether GenericAutowireComposer
defined in zscript.

[1]

(and GenericForwardComposer

[2]

) should wire the variables

Some people reported that the wiring of zscript variables might cause some performance degrade if there are a lot of
zscript code used in a page. You could specify this library variable as the follows to turn it off.
<!-- in WEB-INF/zk.xml -->
<library-property>
<name>org.zkoss.zk.ui.composer.autowire.zscript</name>
<value>false</value>
</library-property>
Notice that, to have the best performance, it is recommended not to use zscript at all. For more more details, please
refer to ZK Developer's Reference: Performance Tips.
If you don't use any zscript, this option does not matter since ZK is smart enough to skip the wiring of zscript
variables automatically.

Version History
Version
5.0.6

Date
Feburary, 2011

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ GenericAutowireComposer. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ GenericForwardComposer. html#

Content
Introduced

org.zkoss.zk.ui.composer.autowire.xel

39

org.zkoss.zk.ui.composer.autowire.xel
Property:
org.zkoss.zk.ui.composer.autowire.xel
Default: true (it is default to false in 6.0)
[since 5.0.6]
It specifies whether GenericAutowireComposer [1] (and GenericForwardComposer
defined in variable resolvers (XEL, see also the variable-resolver directive).

[2]

) should wire the variables

For example, You could specify this library variable as follows to turn it off.
<!-- in WEB-INF/zk.xml -->
<library-property>
<name>org.zkoss.zk.ui.composer.autowire.xel</name>
<value>false</value>
</library-property>

Version History
Version
5.0.6

Date
Feburary, 2011

Content
Introduced

org.zkoss.zk.ui.EmulateIE7
Property:
org.zkoss.zk.ui.EmulateIE7
Default: false
[since 5.0.2]
It specifies if we can make Internet Explorer 8 running in IE7 compatible mode. This can be used if some of your
JavaScript code doesn't work well in IE8.
For more information, please refer to MSDN: Introducing IE=EmulateIE7 [1].

References
[1] http:/ / blogs. msdn. com/ ie/ archive/ 2008/ 06/ 10/ introducing-ie-emulateie7. aspx

org.zkoss.zk.ui.event.EventQueueProvider.class

40

org.zkoss.zk.ui.event.EventQueueProvider.class
Property:
org.zkoss.zk.ui.event.EventQueueProvider.class
Default: none (it implies EventQueueProviderImpl
[since 5.0.0]

[1]

It specifies the name of the class used to provide the event queue. The class must implement the
EventQueueProvider [2] interface.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ event/ impl/ EventQueueProviderImpl. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ event/ impl/ EventQueueProvider. html#

org.zkoss.zk.ui.input.grouping.allowed
Property:
org.zkoss.zk.ui.input.grouping.allowed
Default: true
[since 5.0.5]
Turn on/off whether the user is allowed to key in the grouping character when entering a number. The grouping
character depends on the Locale. For example, it is a comma in English, and a dot in Germany. By default, ZK will
allow the user to key in the grouping characters and the grouping characters are simply ignored when the input is
parsed to a number.
Some people still get confused whether the application considers a comma as a decimal point or not, when he is new
to the application. By disabling the entering of the grouping character will help in this case.
<library-property>
<name>org.zkoss.zk.ui.input.grouping.allowed</name>
<value>false</value>
</library-property>
If you want to disable it only for a particular page, you could specify it in the page's attribute (note: the page must be
the root page). For example,
<zk>
<custom-attributes org.zkoss.zk.ui.input.grouping.allowed="false" scope="page"/>
<doublebox/>
</zk>

org.zkoss.zk.ui.macro.autoforward.disabled

41

org.zkoss.zk.ui.macro.autoforward.disabled
Property:
org.zkoss.zk.ui.macro.autoforward.disabled
Default: false
[since 5.0.4]
Turn on/off auto forward mechanism for macro component
<library-property>
<name>org.zkoss.zk.ui.macro.autoforward.disabled</name>
<value>true</value>
</library-property>

Version History
Version
5.0.4

Date
August 2010

Content
org.zkoss.zk.ui.macro.autoforward.disabled Turn on/off auto forward mechanism for macro component

org.zkoss.zk.ui.macro.autowire.disabled
Property:
org.zkoss.zk.ui.macro.autowire.disabled
Default: false
[since 5.0.4]
Turn on/off auto wire mechanism for macro component
<library-property>
<name>org.zkoss.zk.ui.macro.autowire.disabled</name>
<value>true</value>
</library-property>

Version History
Version
5.0.4

Date
August 2010

Content
org.zkoss.zk.ui.macro.autowire.disabled Turn on/off auto wire mechanism for macro component

org.zkoss.zk.ui.metainfo.page.Loader.class

org.zkoss.zk.ui.metainfo.page.Loader.class
Property:
org.zkoss.zk.ui.metainfo.page.Loader.class
Default: none
[since 5.0.4]
It specifies the name of the class used to load the page definitions. The class must implement the Loader [1] interface
and it must have a constructor as follows.
public FooLoader(org.zkoss.zk.ui.WebApp wapp) { //assume FooLoader is
the implementation class
...
The default iimplementation is straightforward:
private static class MyLoader extends
org.zkoss.web.util.resource.ResourceLoader {
private final WebApp _wapp;
private MyLoader(WebApp wapp) {
_wapp = wapp;
}
//-- super --//
protected Object parse(String path, File file, Object extra)
throws Exception {
final Locator locator =
extra != null ? (Locator)extra: getLocator(_wapp,
path);
return new Parser(_wapp, locator).parse(file, path);
}
protected Object parse(String path, URL url, Object extra)
throws Exception {
final Locator locator =
extra != null ? (Locator)extra: getLocator(_wapp,
path);
return new Parser(_wapp, locator).parse(url, path);
}
}

42

org.zkoss.zk.ui.metainfo.page.Loader.class

43

Version History
Version
5.0.4

Date
August 2010

Content
org.zkoss.zk.ui.metainfo.page.Loader.class It specifies the name of the class used to load the page definitions.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ util/ resource/ Loader. html#

org.zkoss.zk.ui.uuidRecycle.disabled
Property:
org.zkoss.zk.ui.uuidRecycle.disabled
Default: false (i.e., UUID recycle is enabled)
[since 5.0.3]
It specifies whether to disable the recycle of UUID. By recycling UUID it will reduce the memory use of the
browser. It is enabled by default.

org.zkoss.zk.ui.sys.XMLResourcesLocator.class
Property:
org.zkoss.zk.ui.sys.XMLResourcesLocator.class
Default: none (it implies ClassLocator
[since 6.6.0]

[1]

It specifies the name of the class used to load metainfo/config.xml, metainfo/lang.xml and metainfo/lang-addon.xml.
By default, they are loaded from the class path. If you prefer to load them from other locations, implement the
XMLResourcesLocator [2] interface.
Notice that you can specify the property in WEB-INF/zk.xml, since it is too late. Rather, you have to specify in
the server's configuration (as a system property).

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ util/ resource/ ClassLocator. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ util/ resource/ XMLResourcesLocator. html#

org.zkoss.zk.WPD.cache

org.zkoss.zk.WPD.cache
Property:
org.zkoss.zk.WPD.cache
Default: true
[since 5.0.7]
Specifies whether to cache the result of ZK WPD files (the JavaScript code for widgets) at the server. By default, it
is enabled. It means the JavaScript code specified in a WPD file is loaded and cached at the server. The performance
is good. However, if you are debugging the widget's client-side code and you'd like to modify the content without
restarting the server, you could disable the caching of WPD files.
Notice that you don't have to turn it off if you restart the server each time you modify the widget's client-side code.

org.zkoss.zkmax.zul.FiledownloadListener.class
Property:
org.zkoss.zkmax.zul.FiledownloadListener.class
Default: none
[Enterprise Edition]
[Since 3.5.0]
It specifies the name of the class that will be notified when a file download is happening. The class must implement
the FiledownloadListener [1] interface.
A developer usually uses it to reject a download if the user tried to resume it in an unacceptable situation. For
example, a developer can limit the user from downloading within the upcoming 24 hours.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zkmax/ zul/ FiledownloadListener. html#

44

org.zkoss.zul.borderlayout.animation.disabed

org.zkoss.zul.borderlayout.animation.disabed
Property:
org.zkoss.zul.borderlayout.animation.disabed
Default: false
[Since 5.0.8]
It specifies whether disable the animation of the borderlayout component.
For more information, please refer to ZK Component Reference.

org.zkoss.zul.client.rod
Property:
org.zkoss.zul.client.rod
Default: true
[Enterprise Edition]
[since 5.0.0]
It specifies whether to apply Client Render on Demand.
Notice that you can enable or disable this feature a particular component and all its descendants by specifying a
custom attribute called org.zkoss.zul.client.rod.

45

org.zkoss.zul.include.mode

46

org.zkoss.zul.include.mode
Property:
org.zkoss.zul.include.mode
Default: auto (5.0)
Default: defer (3.x)
[Since 3.6.2]
It specifies the default mode of the include component. In ZK 3 and prior, the default mode is defer, which is
backward-compatible with the prior version. Since ZK 5, the default mode is auto for easier control.
For more information, please refer to ZK Component Reference.

org.zkoss.zul.grid.autoSort
Property:
org.zkoss.zul.grid.autoSort
Default: false
[Since 5.0.7]
Specifies whether to sort the model when the following cases:
Grid.setModel(ListModel) [1]is called and Column.setSortDirection(String) [2] is set.
Column.setSortDirection(String) [2] is called.
Model receives ListDataEvent [3]and Column.setSortDirection(String) [2] is set.
If you want to ignore sort when receiving ListDataEvent [3], you can specify the value to be ignore.change.
If you prefer to configure a particular component, you could specify it as the custom attribute of the component or
any of its ancestor components.
<grid>
<custom-attributes org.zkoss.zul.grid.autoSort="true"/>
...

Version History
Version
5.0.7

Date
April 2011

Content
Grid shall sort model based on current state.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zul/ Grid. html#setModel(ListModel)
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zul/ Column. html#setSortDirection(String)
[3] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zul/ event/ ListDataEvent. html#

org.zkoss.zul.grid.preloadSize

47

org.zkoss.zul.grid.preloadSize
Property:
org.zkoss.zul.grid.preloadSize
Default: 7
[Since 5.0.8]
Specifies the number of rows to preload when receiving the rendering request from the client. It is used only for live
data (Grid.setModel(ListModel) [1]) but not paging (Grid.getPagingChild() [1]).
If you prefer to configure a particular component, you could specify it as the custom attribute of the component or
any of its ancestor components.
<grid>
<custom-attributes org.zkoss.zul.grid.preloadSize="10"/>
...

Version History
Version
5.0.8

Date
June 2011

Content
Deprecated setPreloadSize, instead with a custom attributes "org.zkoss.zul.grid.preloadSize".

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zul/ Grid. html#getPagingChild()

org.zkoss.zul.grid.initRodSize

48

org.zkoss.zul.grid.initRodSize
Property:
org.zkoss.zul.grid.initRodSize
Default: 100
[Since 5.0.8]
Specifies the number of rows rendered when the Grid first render. It is used only for live data
(Grid.setModel(ListModel) [1]) but not paging (Grid.getPagingChild() [1]).
If you prefer to configure a particular component, you could specify it as the custom attribute of the component or
any of its ancestor components.
<grid>
<custom-attributes org.zkoss.zul.grid.initRodSize="30"/>
...

Version History
Version
5.0.8

Date
June 2011

Content
Add a custom attributes "org.zkoss.zul.grid.initRodSize" for control ROD render size.

org.zkoss.zul.listbox.checkmarkDeselectOthers
Property:
org.zkoss.zul.listbox.checkmarkDeselectOthers
Default: false
[Since 5.0.5]
If a listbox's checkmark (Listbox.isCheckmark() [1]) is enabled, the selection will be toggled when an user clicks an
item. In other words, all other items will remain the same.
If you prefer to deselect all other items and select the item being clicked (which the behavior of ZK 5.0.4 and
earlier), you could specify true to this library property.

org.zkoss.zul.listbox.checkmarkDeselectOthers

49

Version History
Version
5.0.5

Date

Content

September
2010

org.zkoss.zul.listbox.checkmarkDeselectOthers and org.zkoss.zul.tree.checkmarkDeselectOthers are introduced to control


how to select items when an item is clicked on a tree or a listbox with checkmark.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zul/ Listbox. html#isCheckmark()

org.zkoss.zul.listbox.rightSelect
Property:
org.zkoss.zul.listbox.rightSelect
Default: true
[Since 5.0.5]
If a listbox's checkmark (Listbox.isCheckmark()
clicks on an item.

[1]

) is enabled, the selection will be toggled when the user right

If you prefer not to select/deselect item with right click, you could specify false to this library property.
If you prefer to configure a particular component, you could specify it as the custom attribute of the component or
any of its ancestor components.
<listbox>
<custom-attributes org.zkoss.zul.listbox.rightSelect="false"/>
...

Version History
Version

Date

Content

5.0.5

October
2010

org.zkoss.zul.listbox.rightSelect and org.zkoss.zul.tree.rightSelect are introduced to control whether to toggle item selection
or not when an item is right clicked on a tree or a listbox with checkmark.

5.0.7

April 2011 org.zkoss.zul.listbox.rightSelect and org.zkoss.zul.tree.rightSelect could be specified as component's attribute (boolean)
[1]
Component.getAttribute(java.lang.String, boolean) ).

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ Component. html#getAttribute(java. lang. String,

org.zkoss.zul.listbox.groupSelect

50

org.zkoss.zul.listbox.groupSelect
Property:
org.zkoss.zul.listbox.groupSelect
Default: false
[Since 5.0.7]
Giving true on this property makes Listgroups selectable in Listbox.
<listbox>
<custom-attributes org.zkoss.zul.listbox.groupSelect="true"/>
...
</listbox>

Version History
Version

Date

Content

org.zkoss.zul.listbox.autoSort
Property:
org.zkoss.zul.listbox.autoSort
Default: false
[Since 5.0.7]
Specifies whether to sort the model when the following cases:
Listbox.setModel(ListModel) [1] is called and Listheader.setSortDirection(String) [2] is set.
Listheader.setSortDirection(String) [2] is called.
Model receives ListDataEvent [3]and Listheader.setSortDirection(String) [2] is set.
If you want to ignore sort when receiving ListDataEvent [3], you can specify the value as ignore.change.
If you prefer to configure a particular component, you could specify it as the custom attribute of the component or
any of its ancestor components.
<listbox>
<custom-attributes org.zkoss.zul.listbox.autoSort="true"/>
...

org.zkoss.zul.listbox.autoSort

51

Version History
Version

Date

Content

5.0.7

April 2011

Listbox shall sort model based on current state.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zul/ Listbox. html#setModel(ListModel)
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zul/ Listheader. html#setSortDirection(String)

org.zkoss.zul.listbox.preloadSize
Property:
org.zkoss.zul.listbox.preloadSize
Default: 7
[Since 5.0.8]
Specifies the number of items to preload when receiving the rendering request from the client. It is used only if live
data (Listbox.setModel(ListModel) [1]) and not paging (Listbox.getPagingChild() [1]).
If you prefer to configure a particular component, you could specify it as the custom attribute of the component or
any of its ancestor components.
<listbox>
<custom-attributes org.zkoss.zul.listbox.preloadSize="10"/>
...

Version History
Version
5.0.8

Date
June 2011

Content
Deprecated setPreloadSize, instead with a custom attributes "org.zkoss.zul.listbox.preloadSize".

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zul/ Listbox. html#getPagingChild()

org.zkoss.zul.listbox.initRodSize

52

org.zkoss.zul.listbox.initRodSize
Property:
org.zkoss.zul.listbox.initRodSize
Default: 100
[Since 5.0.8]
Specifies the number of items rendered when the Listbox first render. It is used only if live data
(Listbox.setModel(ListModel) [1]) and not paging (Listbox.getPagingChild() [1]).
If you prefer to configure a particular component, you could specify it as the custom attribute of the component or
any of its ancestor components.
<listbox>
<custom-attributes org.zkoss.zul.listbox.initRodSize="30"/>
...

Version History
Version
5.0.8

Date
June 2011

Content
Add a custom attributes "org.zkoss.zul.listbox.initRodSize" for control ROD render size.

org.zkoss.zul.numberFormat
Property:
org.zkoss.zul.numberFormat
Default: ##,##0.##
[Since 5.0.9]
It specifies the default format when the locale of the NumberInputElement is specified.
Note: if the format is specified already, this setting won't take effect.

org.zkoss.zul.progressbox.position

53

org.zkoss.zul.progressbox.position
Property:
org.zkoss.zul.progressbox.position
Default: left, top
[Since 5.0.1]
It specifies how to display the progress box at the client. The progress box is a message used to indicate the AU
requests being processed by the server. By default, it is displayed at the left, top corner.
Here is a list of allowed values. If you want to specify two of them, separate them with a comma, such as
left,top.

Allowed Values
Value

Description

bottom Align the progress box at the bottom edge of the browser window.
center

Align the progress box at the center of the browser window. If it is used with left and top, it means the center in the vertical orientation.

left

Align the progress box at the left edge of the browser window.

mouse

Align the progress box near by the mouse pointer. If specified, it ignores all other values.

right

Align the progress box at the right edge of the browser window.

top

Align the progress box at the top edge of the browser window.

org.zkoss.zul.theme.browserDefault

org.zkoss.zul.theme.browserDefault
Property:
org.zkoss.zul.theme.browserDefault
Default: false (override browser default with ours)
[Since 3.6.0]
It specifies whether or not to override the standard HTML tags, such as body's margin and padding.

org.zkoss.zul.theme.fontFamilyC
Property:
org.zkoss.zul.theme.fontFamilyC
Default: arial, sans-serif
[Since 3.6.0]
It specifies the font used for the content in the ZUL CSS file.

org.zkoss.zul.theme.fontFamilytT
Property:
org.zkoss.zul.theme.fontFamilytT
Default: arial, sans-serif
[Since 3.6.0]
It specifies the font used for the title in the ZUL CSS file.

54

org.zkoss.zul.theme.fontSizeM

org.zkoss.zul.theme.fontSizeM
Property:
org.zkoss.zul.theme.fontSizeM
Default: 12px
[Since 3.6.0]
It specifies the size of the middle font used in the ZUL CSS file.

org.zkoss.zul.theme.fontSizeMS
Property:
org.zkoss.zul.theme.fontSizeMS
Default: 11px
[Since 3.6.0]
It specifies the size of the middle-smaller font used in the ZUL CSS file.

org.zkoss.zul.theme.fontSizeS
Property:
org.zkoss.zul.theme.fontSizeS
Default: 11px
[Since 3.6.0]
It specifies the size of the smaller font used in the ZUL CSS file.

55

org.zkoss.zul.theme.fontSizeXS

56

org.zkoss.zul.theme.fontSizeXS
Property:
org.zkoss.zul.theme.fontSizeXS
Default: 10px
[Since 3.6.0]
It specifies the size of the extreme small font used in the ZUL CSS file.

org.zkoss.zul.tree.checkmarkDeselectOthers
Property:
org.zkoss.zul.tree.checkmarkDeselectOthers
Default: false
[Since 5.0.5]
If a tree's checkmark (Tree.isCheckmark() [1]) is enabled, the selection will be toggled when a user clicks an item. In
other words, all other items will remain the same.
If you prefer to deselect all other items and select the item being clicked (which the behavior of ZK 5.0.4 and
earlier), you could specify true to this library property.
If you prefer to configure a particular component, you could specify it as the custom attribute of the component or
any of its ancestor components.
<listbox>
<custom-attributes org.zkoss.zul.listbox.rightSelect="false"/>
...

Version History
Version

Date

Content

5.0.5

October
2010

org.zkoss.zul.listbox.rightSelect and org.zkoss.zul.tree.rightSelect are introduced to control whether to toggle item selection
or not when an item is right clicked on a tree or a listbox with checkmark.

5.0.7

April 2011 org.zkoss.zul.listbox.rightSelect and org.zkoss.zul.tree.rightSelect could be specified as component's attribute (boolean)
[1]
Component.getAttribute(java.lang.String, boolean) ).

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zul/ Tree. html#isCheckmark()

org.zkoss.zul.tree.rightSelect

57

org.zkoss.zul.tree.rightSelect
Property:
org.zkoss.zul.tree.rightSelect
Default: true
[Since 5.0.5]
If a tree's checkmark (Tree.isCheckmark()
item.

[1]

) is enabled, the selection will be toggled when the user right clicks

If you prefer not to select/deselect item on right click, you could specify false to this library property.

org.zkoss.zul.tree.autoSort
Property:
org.zkoss.zul.tree.autoSort
Default: false
[Since 5.0.7]
Specifies whether to sort the model when the following cases:
(TreeModel) Tree.setModel (TreeModel) [1]is called and Treecol.setSortDirection(String) [2] is set.
Treecol.setSortDirection(String) [2] is called.
Model receives TreeDataEvent [3] and Treecol.setSortDirection(String) [2] is set.
If you want to ignore sorting when receiving TreeDataEvent [3], you can specifies the value as ignore.change.
If you prefer to configure a particular component, you could specify it as the custom attribute of the component or
any of its ancestor components.
<tree>
<custom-attributes org.zkoss.zul.tree.autoSort="true"/>
...

Version History
Version

Date

Content

5.0.7

April 2011

Tree shall sort model based on current state.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zul/ Tree. html#setModel
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zul/ Treecol. html#setSortDirection(String)
[3] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zul/ event/ TreeDataEvent. html#

The listener Element

58

The listener Element


Syntax:
<listener>
<listener-class>a_class_name</listener-class>
</listener>
Specifies the name of the class that implements one of the following interfaces. Depending on the interface(s) it
implements, it will be invoked when the corresponding situation occurs.

The org.zkoss.zk.ui.event.EventThreadCleanup
interface
Listener:
org.zkoss.zk.ui.event.EventThreadCleanup
A listener could implement EventThreadCleanup
event.

[1]

to cleanup an event processing thread, after it has processed an

Notice that it is useless unless the event processing threads are enabled (it is disabled by default).
If a listener implements this interface, an instance is created, and then the cleanup method is called in the event
processing thread after the thread processes the event. Then, the complete method is called in the main thread
(aka., the servlet thread), after the main thread is resumed.
Note: The complete method won't be called if the corresponding cleanup method threw an exception.
A typical use of this feature is to clean up unclosed transaction.
Once registered, an instance is instantiated and the cleanup method is called after leaving the event processing
thread.
Instantiation: An independent instance of the given class is instantiated each time before the method is invoked. It
means it is thread safe, and all information stored in non-static members will be lost after called.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ event/ EventThreadCleanup. html#

The org.zkoss.zk.ui.event.EventThreadInit Interface

The org.zkoss.zk.ui.event.EventThreadInit
Interface
Listener:
org.zkoss.zk.ui.event.EventThreadInit
A listener could implement EventThreadInit [1] to initialize an event processing thread, before an event is dispatched
to it for processing.
Notice that it is useless unless the event processing threads are enabled (it is disabled by default).
If a listener implements this interface, an instance is created, and then the prepare method is called in the main
thread (aka., the servlet thread), before processing an event. Then, the init method is called in the event
processing thread.
If a developer wants to prevent an event from being processed, he can throw an exception in the prepare method
or the init method.
A typical use of this feature is to implement auto-authentication. For example, JBoss [2] required you to call
SecurityAssociation.setPrincipal to grant permissions of a user to the event processing thread.
Instantiation: An independent instance of the given class is instantiated each time before the method is invoked. It
means it is thread safe, and all information stored in non-static members will be lost after called.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ event/ EventThreadInit. html#
[2] http:/ / www. jboss. org

59

The org.zkoss.zk.ui.event.EventThreadResume interface

60

The org.zkoss.zk.ui.event.EventThreadResume
interface
Listener:
org.zkoss.zk.ui.event.EventThreadResume
A listener could implement EventThreadResume
resumed or aborted.

[1]

, such that it will be called after an event processing thread is

Notice that it is useless unless the event processing threads are enabled (it is disabled by default).
If a listener implements this interface, an instance is created, and then the beforeResume method is called in the
main thread (aka., the servlet thread), when a suspended event thread is being resumed. Then, the afterResume
method is called in the event processing thread after the thread is resumed successfully.
If a developer wants to prevent an event from being resumed, he can throw an exception in the beforeResume
method.
Notice that beforeResume executes in the main thread, so it shares the same thread-local storage with the main
thread. On the other hand, afterResume executes in the event processing thread, so it shares the same
thread-local storage with the event thread (and application event listeners).
In addition to resuming normally, a suspended event processing thread might be aborted abnormally. For example,
when the desktop is destroyed, all the suspended event threads will be aborted. When the suspended event processing
thread is aborted, an instance is created, and the abortResume method is called in the main thread.
Note: If a suspended event thread is aborted, none of the beforeResume and afterResume is called.
Moreover, the cleanup and complete methods of EventThreadCleanup won't be called, either. Thus,
you have to handle all necessary cleanups in abortResume.
Instantiation: An independent instance of the given class is instantiated each time before the method is invoked. It
means it is thread safe, and all information stored in non-static members will be lost after called.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ event/ EventThreadResume. html#

The org.zkoss.zk.ui.event.EventThreadSuspend interface

61

The org.zkoss.zk.ui.event.EventThreadSuspend
interface
Listener:
org.zkoss.zk.ui.event.EventThreadSuspend
A listener could implement EventThreadSuspend [1], suthc that it will be called before an event processing thread is
going to be suspended.
Notice that it is useless unless the event processing threads are enabled (it is disabled by default).
If a listener implements this interface, an instance is created, and then the beforeSuspend method, when an
event processing thread is going to suspended. It executes in the event processing thread.
A developer can prevent can prevent an event processing thread from being suspended by throwing an exception.
A typical use of this feature is to limit the number of suspended threads.
Instantiation: An independent instance of the given class is instantiated each time before the method is invoked. It
means it is thread safe, and all information stored in non-static members will be lost after called.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ event/ EventThreadSuspend. html#

The org.zkoss.zk.ui.util.Composer interface


Listener:
org.zkoss.zk.ui.util.Composer
[since 5.0.1]
A listener could implement Composer [1], such that it can process the creation of ZK pages like a composer specified
in the apply attribute. It is also known as system-level composers.
Each time a ZK page, including ZK pages and richlets, is created, ZK will instantiate one instance for each registered
system-level composer and then invoke Composer.doAfterCompose(org.zkoss.zk.ui.Component) [2] with each root
component. The system-level composer is usually used to post-process ZK pages, such as adding a trademark. If you
want to process only certain pages, you can check the request path by calling Desktop.getRequestPath() [3] (the
desktop instance can be found in the given component).
If the system-level composer also implements ComposerExt
exceptions, like any other composer can do.

[4]

, it can be used to handle more situations, such as

If the system-level composer also implements FullComposer [5], it will be invoked when each component is created.
It provides the finest grain of control but a wrong implementation might degrade the performance.
Notice that since a new instance of the composer is created for each page, there is no threading issues.
Richlet
The system-level composers are applied to richlets too. In addition, a system-level composer can implement
ComposerExt [4] to handle exceptions for a richlet, such as doCatch and doFinally. However,

The org.zkoss.zk.ui.util.Composer interface


doBeforeCompose and doBeforeComposeChildren won't be called.
FullComposer [5] is not applicable to richlets. In other words, system-level composers are called only for the
root components.
Instantiation: An independent instance of the given class is instantiated each time before the method is invoked. It
means it is thread safe, and all information stored in non-static members will be lost after called.

References
[1]
[2]
[3]
[4]
[5]

http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ Composer. html#
http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ Composer. html#doAfterCompose(org. zkoss. zk. ui. Component)
http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ Desktop. html#getRequestPath()
http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ ComposerExt. html#
http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ FullComposer. html#

The org.zkoss.zk.ui.util.DesktopCleanup interface


Listener:
org.zkoss.zk.ui.util.DesktopCleanup
A listener could implement DesktopCleanup [1] to cleanup a desktop when it is being destroyed.
When ZK Loader is going to destroy a desktop, it invokes the cleanup method of this interface so that developers
could plug the application-specific codes to cleanup a desktop.
Instantiation: An independent instance of the given class is instantiated each time before the method is invoked. It
means it is thread safe, and all information stored in non-static members will be lost after called.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ DesktopCleanup. html#

62

The org.zkoss.zk.ui.util.DesktopInit interface

The org.zkoss.zk.ui.util.DesktopInit interface


Listener:
org.zkoss.zk.ui.util.DesktopInit
A listener could implement DesktopInit [1] to initialize a new desktop.
When ZK Loader created a new desktop, it invokes the init method of this interface such that developers could
plug the application-specific codes to initialize a desktop.
A developer can prevent a desktop from being created by throwing an exception in the init method.
Instantiation: An independent instance of the given class is instantiated each time before the method is invoked. It
means it is thread safe, and all information stored in non-static members will be lost after called.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ DesktopInit. html#

The org.zkoss.zk.ui.util.EventInterceptor
interface
Listener:
org.zkoss.zk.ui.util.EventInterceptor
A listener could implement EventInterceptor [1] to intercept when an event is sent, posted and processed.
Once registered, an instance is created and shared within the whole application. If you want to intercept events only
for a particular desktop, use Desktop.addListener(java.lang.Object) [2].
Instantiation: For better performance, a single instance of the given class is instantiated when registered. It is then
shared in the whole application. Thus, the implementation must be thread safe.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ EventInterceptor. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ Desktop. html#addListener(java. lang. Object)

63

The org.zkoss.zk.ui.util.ExecutionCleanup interface

The org.zkoss.zk.ui.util.ExecutionCleanup
interface
Listener:
org.zkoss.zk.ui.util.ExecutionCleanup
A listener could implement ExecutionCleanup [1] to cleanup an execution that is being destroyed.
When ZK Loader is going to destroy an execution, it invokes the cleanup method of this interface such that
developers could plug the application-specific codes to cleanup an execution.
Instantiation: An independent instance of the given class is instantiated each time before the method is invoked. It
means it is thread safe, and all information stored in non-static members will be lost after called.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ ExecutionCleanup. html#

The org.zkoss.zk.ui.util.ExecutionInit interface


Listener:
org.zkoss.zk.ui.util.ExecutionInit
A listener could implement ExecutionInit [1] to initialize a new execution.
When the ZK Loader and Update Engine created a new execution, it invokes the init method of this interface
such that developers could plug the application-specific codes to initialize an execution.
Tip: Executions might be stacked. To know whether it is the first execution since a (Servlet) request is processed,
you can check whether the parent argument is null.
A developer can prevent an execution from being created by throwing an exception in the init method.
Instantiation: An independent instance of the given class is instantiated each time before the method is invoked. It
means it is thread safe, and all information stored in non-static members will be lost after called.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ ExecutionInit. html#

64

The org.zkoss.zk.ui.util.Initiator interface

65

The org.zkoss.zk.ui.util.Initiator interface


Listener:
org.zkoss.zk.ui.util.Initiator
[since 5.0.7]
A listener could implement Initiator [1] to handle the initialization of a ZUML page and richlets, as if it is specified in
the init directive. This kind of listeners is called system-level initiators.
Each time a ZK page is created, ZK will instantiate one instance for each registered system-level initiator and the
invoke java.util.Map) Initiator.doInit(org.zkoss.zk.ui.Page, java.util.Map) [2] and other methods.
If you want to process only certain pages, you can check the request path by calling Desktop.getRequestPath()
(the desktop instance can be found in the given component).

[3]

Instantiation: An independent instance of the given class is instantiated each time before the method is invoked. It
means it is thread safe, and all information stored in non-static members will be lost after called.

Version History
Version

Date

Content

5.0.8

July, 2011

The system-level initiators were applied to richlets too.

5.0.7

May, 2011

The system-level initiators were introduced.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ Initiator. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ Initiator. html#doInit(org. zkoss. zk. ui. Page,

The org.zkoss.zk.ui.util.Monitor interface

The org.zkoss.zk.ui.util.Monitor interface


Listener:
org.zkoss.zk.ui.util.Monitor
A listener could implement Monitor [1] to monitor the statuses of ZK. Unlike other listeners, there is at most one
monitor listener for each Web application. If you like, you can chain them together manually.
ZK provides an implementation named Statistic [2], which accumulates the statistic data in the memory. It is a good
starting point to understand the loading of your ZK application.
Instantiation: Unlike most other listeners, at most one monitor is allowed in one application. In addition, it is
shared, so the implementation must be thread safe.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ Monitor. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ Statistic. html#

The org.zkoss.zk.ui.util.PerformanceMeter
interface
Listener:
org.zkoss.zk.ui.util.PerformanceMeter
A listener could implement PerformanceMeter [1] to measure the performance. Unlike other listeners, there is at most
one performance meter listener for each Web application. If you like, you can chain them together manually.
Instantiation: Unlike most other listeners, at most one monitor is allowed in one application. In addition, it is
shared, so the implementation must be thread safe.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ PerformanceMeter. html#

66

The org.zkoss.zk.ui.util.RequestInterceptor interface

The org.zkoss.zk.ui.util.RequestInterceptor
interface
Listener:
org.zkoss.zk.ui.util.RequestInterceptor
A listener could implement RequestInterceptor [1] to intercept each request made to the ZK Loader and ZK Update
Engine. Once registered, an instance of the specified class is created and shared within the whole application. Then,
the request method is invoked, each time a request is received by the ZK Loader or ZK Update Engine.
A typical use of this interface is to determine the locale and/or time zone of the request. Please refer to ZK
Developer's Reference for the details of Internationalization.
You can register any number of the request interceptors (RequestInterceptor [1]).
Note:
1. Unlike ExecutionInit [1] and many other listeners, an instance of the registered RequestInterceptor is
created at the time of registration, and then it is shared by the whole application. Thus, you have to make sure it
can be accessed concurrently.
2. The request parameters will be parsed with the proper locale and character encoding, after the java.lang.Object,
java.lang.Object) RequestInterceptor.request(org.zkoss.zk.ui.Session, java.lang.Object, java.lang.Object) [2]
method is called. It is not recommended to call the getParameter or getParameterValues methods (of
javax.servlet.ServletRequest) in this method.
Instantiation: For better performance, a single instance of the given class is instantiated when registered. It is then
shared in the whole application. Thus, the implementation must be thread safe.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ RequestInterceptor. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ RequestInterceptor. html#request(org. zkoss. zk. ui. Session,

67

The org.zkoss.zk.ui.util.SessionCleanup interface

The org.zkoss.zk.ui.util.SessionCleanup interface


Listener:
org.zkoss.zk.ui.util.SessionCleanup
A listener could implement SessionCleanup [1] to cleanup a session that is being destroyed.
When ZK Loader is going to destroy a session, it invokes the cleanup method of this interface such that
developers could plug the application-specific codes to cleanup a session.
Instantiation: An independent instance of the given class is instantiated each time before the method is invoked. It
means it is thread safe, and all information stored in non-static members will be lost after called.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ SessionCleanup. html#

The org.zkoss.zk.ui.util.SessionInit interface


Listener:
org.zkoss.zk.ui.util.SessionInit
A listener could implement SessionInit [1] to cleanup a session that is being destroyed.
When ZK Loader is going to create a session, it invokes the init method of this interface such that developers
could plug the application-specific codes to initialize a session when it is created.
Instantiation: An independent instance of the given class is instantiated each time before the method is invoked. It
means it is thread safe, and all information stored in non-static members will be lost after called.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ SessionInit. html#

68

The org.zkoss.zk.ui.util.UiLifeCycle interface

The org.zkoss.zk.ui.util.UiLifeCycle interface


Listener:
org.zkoss.zk.ui.util.UiLifeCycle
A listener could implement UiLifeCycle [1] to handle something depending on the life cycle of UI, such as attaching
a component to a page, moving a component and so on.
Instantiation: For better performance, a single instance of the given class is instantiated when registered. It is then
shared in the whole application. Thus, the implementation must be thread safe.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ UiLifeCycle. html#

The org.zkoss.zk.ui.util.URIInterceptor interface


Listener:
org.zkoss.zk.ui.util.URIInterceptor
A listener could implement URIInterceptor [1] to intercept the retrieval of ZUML pages with the associated URI.
Once registered, an instance of the specified class is created and shared within the whole application. Then, the
request method is invoked, each time the application wants to retrieve the page definition of a page based on an
URI.
A typical use of this interface is to ensure the current user has the authority to access certain URIs.
You can register any number of URI interceptors (URIInterceptor).
Note:
1. Unlike ExecutionInit and many other listeners, an instance of the registered URIInterceptor is
created at the time of registration, and then it is shared by the whole application. Thus, you have to make sure that
it can be accessed concurrently.
Instantiation: For better performance, a single instance of the given class is instantiated when registered. It is then
shared in the whole application. Thus, the implementation must be thread safe.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ URIInterceptor. html#

69

The org.zkoss.zk.ui.util.WebAppCleanup interface

The org.zkoss.zk.ui.util.WebAppCleanup
interface
Listener:
org.zkoss.zk.ui.util.WebAppCleanup
A listener could implement WebAppCleanup [1] to cleanup a ZK application, when it is being destroyed.
When a ZK application is going to be destroyed, it invokes the cleanup method of this interface such that
developers could plug the application-specific codes to cleanup the application.
Instantiation: An independent instance of the given class is instantiated each time before the method is invoked. It
means it is thread safe, and all information stored in non-static members will be lost after called.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ WebAppCleanup. html#

The org.zkoss.zk.ui.util.WebAppInit interface


Listener:
org.zkoss.zk.ui.util.WebAppInit
A listener could implement WebAppInit [1] to initialize a ZK application when it has been loaded.
When a ZK application has been loaded, it invokes the init method of this interface such that developers could
plug the application-specific codes to initialize the application.
Instantiation: An independent instance of the given class is instantiated each time before the method is invoked. It
means it is thread safe, and all information stored in non-static members will be lost after called.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ WebAppInit. html#

70

The org.zkoss.zk.ui.sys.PropertiesRenderer interface

71

The org.zkoss.zk.ui.sys.PropertiesRenderer
interface
Listener:
org.zkoss.zk.ui.sys.PropertiesRenderer
A listener could implement PropertiesRenderer
component.

[1]

to generate application-specific client-side properties of a

Once
registered,
org.zkoss.zk.ui.sys.ContentRenderer)
PropertiesRenderer.renderProperties(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.sys.ContentRenderer) [2] will be
invoked each time a component has rendered its client-side properties. The application-specific properties generated
by this method will be sent with the default properties generated by the client. If there is a property with the same
name, the default one will be evaluated first, and the the application-specific one.
For example, assume you have an implementation called foo.MyRenderer, then you could specify it in
WEB-INF/zk.xml
<!-- in WEB-INF/zk.xml -->
<listener>
<listener-class>foo.MyRenderer</listener-class>
</listener>
And, assume you'd like to generate an extra property if the component is a datebox, you could do as follows.
package foo;
import org.zkoss.zk.ui.sys.*;
import org.zkoss.zk.ui.Component;
import org.zkoss.zul.*;
public class MyRenderer implements PropertiesRenderer {
public void render(Component comp, ContentRenderer renderer)
throws java.io.IOException {
if (comp instanceof Datebox) {
renderer.render("myProp", myValue);
}
}
}
Instantiation: For better performance, a single instance of the given class is instantiated when registered. It is then
shared in the whole application. Thus, the implementation must be thread safe.

The org.zkoss.zk.ui.sys.PropertiesRenderer interface

72

Version History
Version
5.0.7

Date
April 2011

Content
PropertiesRenderer

[1]

was introduced.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ sys/ PropertiesRenderer. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ sys/ PropertiesRenderer. html#renderProperties(org. zkoss. zk. ui. Component,

The org.zkoss.zk.ui.sys.SEORenderer interface


Listener:
org.zkoss.zk.ui.sys.SEORenderer
A listener could implement SEORenderer [1] to generate application-specific SEO content. The SEO content could
be anything. It is visible to the search engine (for indexing), but it is not visible to the end users[2]
Once registered, java.io.Writer) SEORenderer.render(org.zkoss.zk.ui.Page, java.io.Writer)
time the main page of a desktop has been rendered and sent to the client[4] .

[3]

will be invoked each

For example, assume you have an implementation called foo.MySEORenderer, then you could specify it in
WEB-INF/zk.xml
<!-- in WEB-INF/zk.xml -->
<listener>
<listener-class>foo.MySEORenderer</listener-class>
</listener>
You could generate anything that you'd like the
SEORenderer.render(org.zkoss.zk.ui.Page, java.io.Writer) [3]:

search

engine

to

index

in

java.io.Writer)

package foo;
import org.zkoss.zk.ui.sys.SEORenderer;
import org.zkoss.zk.ui.Page;
public class MySEORenderer implements SEORenderer {
public void render(Page page, java.io.Writer out)
throws java.io.IOException {
out.write("<a href=\"whatever\">whatever</a>");
}
}
In addition to SEO content, you could also generate the JavaScript code. For example, you could implement a
SEORenderer listener to generate a snippet of JavaScript code that will be embedded into every page.
Notice that, if specified, this class will be instantiated and invoked even if the crawlable option is not enabled.
Instantiation: An independent instance of the given class is instantiated each time before the method is invoked. It
means it is thread safe, and all information stored in non-static members will be lost after called.

The org.zkoss.zk.ui.sys.SEORenderer interface

73

Real Example
You can also take a look at the ZK's blog about another approach to SEO in ZK Applications [5].
[1]
[2]
[3]
[4]
[5]

http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ sys/ SEORenderer. html#
The SEO content will be replaced with the content of ZK components after the page has been rendered.
http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ sys/ SEORenderer. html#render(org. zkoss. zk. ui. Page,
It also means it won't be called in AU requests.
http:/ / blog. zkoss. org/ index. php/ 2011/ 03/ 17/ make-zk-application-work-with-seo/

Version History
Version
5.0.7

Date
April
2011

Content
SEORenderer (http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ sys/ SEORenderer. html#) could be specified
as a listener.

The org.zkoss.xel.VariableResolver Interface


Listener:
org.zkoss.xel.VariableResolver
[since 5.0.4]
A listener could implement VariableResolver [1], and then it will be used as the default variable resolver of each
page. In other words, the variable resolver defined will be available to all pages. It is also called the system-level
variable resolver.
ZK will instantiate an instance of the given class for each page, so the variable resolver is no need to be thread safe.
This feature is useful for tools and utilities to provide the default variable resolvers (aka., implicit variables). A tool
can specify the listeners in metainfo/zk/config.xml (locatable by the class loader) -- not just in
WEB-INF/zk.xml.
Instantiation: An independent instance of the given class is instantiated each time before the method is invoked. It
means it is thread safe, and all information stored in non-static members will be lost after called.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ xel/ VariableResolver. html#

The log Element

74

The log Element


By default, ZK's logger depends on how the Web server is configured. However, you could configure ZK to load and
monitor i3-log.conf as described in the Logger section of the Beyond ZK chapter.
<log>
<log-base>org.zkoss</log-base>
</log>
If you want to use the same logging mechanism in your application, you could configure ZK to handle all loggers as
follows.
<log>
<log-base></log-base>
</log>
where an empty string means all packages, not just org.zkoss in the previous example.

Version History
Version

Date

Content

The preference Element


Syntax:
<preference>
<name>any name</name>
<value>any value</value>
</preference>
[Optional]
Specify a preference with the preference element depicted above. The name and value are application specific
and you can specify whatever value you like. Mupltie To avoid name conflict, it is suggested to prefix the name with
your domain name, such as com.friend.some.another.
The preferences are application-level. They are shared by a single ZK application (WebApp [1]).
They can then be retrieved back by calling the getPreference method of the Configuration [2] class. Notice that
each Web application has one configuration, which can be found by the use of getConfiguration method of
the WebApp [1] interface.
String value =
webApp.getConfiguration().getPreference("org.zkoss.name", null);
if (value != null) {
...
}
For a complete list of supported preferences, please refer to the Preferences section.

The preference Element

75

Version History
Version

Date

Content

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ WebApp. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ Configuration. html#

The Preferences
Here is a list of supported preferences that ZK recognizes.
To define a preference, you can configure it in WEB-INF/zk.xml[1] . The preferences are similar to the library
properties: they are application-specific name/value pairs. You could use them to configure your application and ZK
engine. However, unlike the library properties, preferences are stored in Configuration [2] and can be retrieved by use
of java.lang.String) Configuration.getPreference(java.lang.String, java.lang.String) [2].
For example,
<preference>
<name>org.zkoss.zk.ui.WebApp.name</name>
<value>My Killer Application</value>
</preference>
[1] For more information, please refer to The preference Element.
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ Configuration. html#getPreference(java. lang. String,

org.zkoss.zk.ui.WebApp.name

76

org.zkoss.zk.ui.WebApp.name
Preference:
org.zkoss.zk.ui.WebApp.name
Default: ZK
[since 5.0.6]
It specifies the application name. It is the return value of WebApp.getAppName()
Messagebox.

[1]

. It is also the default title of

For example,
<!-- in WEB-INF/zk.xml -->
<preference>
<name>org.zkoss.zk.ui.WebApp.name</name>
<value>My Killer Application</value>
</preference>
In addition, you could change the application's name in Java by invoking WebApp.setAppName(java.lang.String) [2].

Version History
Version
5.0.6

Date
Feburary, 2011

Content
Introduced

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ WebApp. html#getAppName()
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ WebApp. html#setAppName(java. lang. String)

The richlet Element

77

The richlet Element


To declare a richlet, you have to add the richlet element to zk.xml. You could specify any number of
richlet elements. Each of them must have two child elements, richlet-name and richlet-class, and
might have any number of the init-param child elements.
The class name specified in the richlet-class element must implement the Richlet [1] interface. The name and
value specified in the init-param element can be retrieved when the init method of
Richlet.init(org.zkoss.zk.ui.RichletConfig) [2] is called.
<richlet>
<richlet-name>Test</richlet-name>
<richlet-class>org.zkoss.zkdemo.TestRichlet</richlet-class>
<init-param>
<param-name>any</param-name>
<param-value>any</param-value>
</init-param>
</richlet>
Once declaring a richlet, you can map it to any number of URL by the use of the richlet-mapping element as
described in the next section.

Version History
Version

Date

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ Richlet. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ Richlet. html#init(org. zkoss. zk. ui. RichletConfig)

Content

The richlet-mapping Element

The richlet-mapping Element


Once a richlet is declared, you could map it to any number of URL by using richlet-mapping as depicted
below.
<richlet-mapping>
<richlet-name>Test</richlet-name>
<url-pattern>/test</url-pattern>
</richlet-mapping>
<richlet-mapping>
<richlet-name>Test</richlet-name>
<url-pattern>/some/more/*</url-pattern>
</richlet-mapping>
When mapping, you should consider the servlet-mapping of ZK Loader in web.xml, for example, if you want
the Richlet work with /path/*, you may specify the servlet-mapping in web.xml as follows:
<servlet-mapping>
<servlet-name>zkLoader</servlet-name>
<url-pattern>/path/*</url-pattern>
</servlet-mapping>
and specify the richlet-mapping as follows:
<richlet-mapping>
<richlet-name>Test</richlet-name>
<url-pattern>/*</url-pattern>
</richlet-mapping>
In this case, both Richlet and ZUL will work great. If you swap the url-pattern of servlet-mapping with
richlet-mapping, only the Richlet will work well.
The URL specified in the url-pattern element must start with /. If the URI ends with /*, then it is matched to
all request with the same prefix. To retrieve the real request, you can check the value returned by
Page.getRequestPath() [1] of the current page.
public void service(Page page) {
if ("/some/more/hi".equals(page.getRequestPath()) {
...
}
}

78

The richlet-mapping Element

79

Version History
Version

Date

Content

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ Page. html#getRequestPath()

The xel-config Element


The allowed child elements include evaluator-class. At most one xel-config element is allowed for each
zk.xml.
<xel-config>
<evaluator-class>my.MyExpressionFactory</evaluator-class>
</xel-config>

The evaluator-class Element


[Default: ELFactory
[Default: ELFactory

[1]
[2]

if run under Java 1.4]


if run under Java 1.5 or above]

It specifies the class used to evaluate XEL (Extensible Expression Language) expressions. The specified class must
implement the ExpressionFactory [3] interface.
If not specified and you are running your ZK application under Java 1.4, ZK uses the XEL implementation from ZK
Commons EL (zcommons-el.jar), which is a performance-enhanced version of Apache Commons EL.
Since ZK 6, if not specified, ZK uses the new XEL implementation from the ZK EL Library (i.e., zel.jar), which
supports new features seen in Unified Expression Language 2.2 such as method calls and l-value. If ZK cannot find
the zel.jar in your class-path, ZK will degrade to use the original ZK Commons EL(zcommons-el.jar).
If your Web server uses another implementation, you can do one of the following:
1. If you prefer the implementation based on Apache JSP 2.1 EL, you have to specify the ApacheELFactory [4]
class. If the Web server doesn't support Apache JSP 2.1 EL, you have to copy el-api.jar (JSP 2.1 API[5] )
and jasper-el.jar (Apache's implementation) to your Web application.
2. If you prefer the implementation based on Apache Commons EL (JSP 2.0 EL), you have to specify the
ApacheELFactory [4] class. If the Web server doesn't support Apache Commons EL, you have to copy
commons-el.jar to your Web application.
3. If you want a different implementation, you can extend from ELFactory [1] or ApacheELFactory [4] by simply
overriding the newExpressionEvaluator method. Of course, if you prefer, you can implement the
ExpressionFactory [3] interface directly.
Notes
[1]
[2]
[3]
[4]
[5]

http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ xel/ el/ ELFactory. html#
http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ xel/ zel/ ELFactory. html#
http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ xel/ ExpressionFactory. html#
http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zkmax/ xel/ el/ ApacheELFactory. html#
Required only if you are using the Web server that supports only JSP 2.0.

The xel-config Element

80

Version History
Version
6.0.0

Date
Sep. 2011

Content
Support those new features seen in Unified Expression Language 2.2 such as method calls and l-value.

The session-config Element


The allowed child elements include session-timeout and max-desktops-per-session. You might
have multiple session-config elements in one zk.xml.
<session-config>
<session-timeout>1800</session-timeout>
<timer-keep-alive>false</timer-keep-alive>
<max-desktops-per-session>15</max-desktops-per-session>
<max-requests-per-session>5</max-requests-per-session>
<max-pushes-per-session>3</max-pushes-per-session>
</session-config>

The automatic-timeout Element


Syntax:
<automatic-timeout>true|false</automatic-timeout>
[Optional]
[Since 3.6.3]
[Default: false]
It specifies whether or not to automatically redirect to the timeout URI.
If false, it means a page will be redirected to the timeout URI, when the use takes some action after timeout.
In other words, nothing would happen (no redirect) if the user does nothing on the page.
If it is set to true, it is redirected as soon as timeout, no matter the user takes any action.
Notice that this setting is applied only to the specified device (<device-type>), so remember to specify the correct
device. For example,

<session-config>
<device-type>ajax</device-type>
<automatic-timeout/> <!-- the same as <automatic-timeout>true</automatic-timeout> <timeout-uri>/timeout.zul</timeout-uri>
</session-config>
For more information, please refer to ZK Developer's Reference/UI Patterns/Session Timeout Management.

The automatic-timeout Element

81

Page-level Automatic Timeout


If you want to specify whether or not to automatically timeout for particular pages, you can use the page directive.
Moreover, it is better to turn off the automatic timeout for the timeout page you want to redirect to (if the page is a
ZUML page). For example,
<!-- my timeout page -->
<?page automaticTimeout="false"?>
...

Version History
Version

Date

Content

The device-type Element


Syntax:
<device-type>device_type|ajax</device-type>
[Optional]
[Since 3.6.3]
[Default: ajax]
It specifies the device type that <timeout-uri> and <automatic-timeout> are applied to. By default, it is
ajax. If you want to specify the timeout URI for mobile device, use mil.
Notice that only <timeout-uri> and <automatic-timeout> depend on this. Others, such as
<session-timeout>, are applied to all devices, regardless what is specified here.

Version History
Version

Date

Content

The max-desktops-per-session Element

82

The max-desktops-per-session Element


Syntax:
<max-desktops-per-session>a_number</max-desktops-per-session>
[Default: 15]
It specifies the maximum allowed number of desktops per session. A desktop represents a HTML page for a
browser. In other words, this number controls the number of concurrent browser windows allowed per session.
A negative number means no limitation at all.
Note: If you use GlobalDesktopCacheProvider [1], then you have to make this number much larger since it means the
maximum allowed number of desktops per system.

Version History
Version

Date

Content

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ impl/ GlobalDesktopCacheProvider. html#

The max-pushes-per-session Element


Syntax:
<max-pushes-per-session>a_number</max-pushes-per-session>
[Default: -1]
[Since 3.6.1]
It specifies the maximum allowed number of concurrent server-push connections per session.
A negative number (default) means no limitation at all. Zero means no server push is allowed at all.
Notices that
A desktop has at most one server-push connection.
A desktop might be killed accidentally. For example, an user closes a browser window. In this case, the server
might not be able to detect it. When specifying this, it is better to specify the maximum allowed number of
desktops.

The max-pushes-per-session Element

83

Version History
Version

Date

Content

The max-requests-per-session Element


Syntax:
<max-requests-per-session>a_number</max-requests-per-session>
[Default: 5]
It specifies the maximum allowed number of concurrent requests per session. Each time a user types an URL at the
browser, it creates a request and the request ends after the response is sent to the browser. In other words, this
number controls how many concurrent requests the same user can send.
A negative number means no limitation at all, but it is not recommended due to the possibility of the
denial-of-service (DoS) attacks.

Version History
Version

Date

Content

The session-timeout Element


Syntax:
<session-timeout>a_number_in_seconds</session-timeout>
[Default: 0 (depending on the Web server)]
It specifies the time, in seconds, between client requests before a session is invalidated. A negative time indicates the
session should never timeout. The default zero means to use the system default (which is usually specified in
web.xml).

Version History
Version

Date

Content

The timeout-message Element

84

The timeout-message Element


Syntax:
<timeout-message>a_message</timeout-message>
[Optional]
[Since 5.0.5]
[Default: a message called

MZk.UPDATE_OBSOLETE_PAGE

[1]

defined in msgzk.properties]

It specifies the message to show when the session is timeout. Notice that it is used only if the timeout-uri element is
not specified.
<session-config>
<device-type>ajax</device-type>
<timeout-message>Session timeout. Please reload.</timeout-message>
</session-config>
For more information, please refer to ZK Developer's Reference/UI Patterns/Session Timeout Management.

Internationalization
If you want to specify a Locale-dependent message, you could specify the key and prefix it with label: as follows.
<session-config>
<device-type>ajax</device-type>
<timeout-message>label:timeout</timeout-message>
</session-config>
Then, you have to prepare the i3-label properties files as described in ZK Developer's Reference.
#i3-label.properties
timeout={
Session timeout.
(multi-line is allowed)
}

JavaScript
Instead of sending the message, you could provide the JavaScript code for the client to evaluate. To specify the
JavaScript code, you have to prefix it with script:.
For example, you have a function called foo.timeout to handle the timeout effect, then you could configure
WEB-INF/zk.xml as follows.
<session-config>
<device-type>ajax</device-type>
<timeout-message>script:foo.timeout('Session Timeout')</timeout-message>
</session-config>
The code depends on the client. For Ajax devices, it has to be JavaScript.

The timeout-message Element

85

Version History
Version
5.0.5

Date
October 2010

Content
The support of Custom Message and JavaScript was introduced.

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ mesg/ MZk. html#UPDATE_OBSOLETE_PAGE

The timeout-uri Element


Syntax:
<timeout-uri>a_uri</timeout-uri>
[Optional]
[Since 3.6.3]
[Default: null]
It specifies the target URI that will be used to redirect users to, when the desktop no longer exists it is usually
caused by session timeout.
If this element is omitted (default), an error message will be shown up at the browser to alert users what has
happened. If you want to customize the message, please use the timeout-message element.
To reload the same URI again, you can specify an empty content as follows.
<session-config>
<device-type>ajax</device-type>
<timeout-uri></timeout-uri>
</session-config>
Notice that this setting is applied only to the specified device (<device-type>), so remember to specify the correct
device.
For more information, please refer to ZK Developer's Reference/UI Patterns/Session Timeout Management.

Version History
Version

Date

Content

The timer-keep-alive Element

The timer-keep-alive Element


Syntax:
<timer-keep-alive>true|false</timer-keep-alive>
[Default: false]
It specifies whether to keep the session alive, when receiving the onTimer event.
A session is considered as timeout (and then invalidated), if it doesn't receive any client requests in the specified
timeout interval (see the session-timeout element for more information).
By setting this option to true, the onTimer event, just like any other events, will reset the session timeout counter
(and then keep the session alive until timeout). Notice that, if this option is true and the timer is shorter than the
session timeout, the session won't be expired.
By default, if this option is false, it means the onTimer event is ignored when handling the session timeout. In
other words, the session will expire if no other event is received before timeout.
Notice that ZK will optimize the onTime event such that it won't be sent if there is no event listener at the server
(for better performance). In other words, the following statement won't fire any onTimer event to the server.
<timer repeats="true" running="true" delay="1000"/>
Thus, if you have to add an event listener to enable the timer-keep-alive feature, such as
<timer repeats="true" running="true" delay="1000" onTimer=""/>

5.0.6 and Earlier


For 5.0.6 and earlier, the above statement will cause the interpreter to start and thus cause some performance penalty.
However, for better performance, you could use a composer as follows.
<timer repeats="true" running="true" delay="1000" apply="foo.DoesNothingTimer"/>
And, then implement foo.DoesNothingTimer as follows.
public class DoesNothingTimer implements Composer {
public void doAfterCompose(Component comp) throws Exception {
comp.addEventListener("onTimer", new
SerializableEventListener() {
public void onEvent(Event event) throws Exception {
//does nothing
}
});
}
}

86

The timer-keep-alive Element

87

Version History
Version

Date

Content

The system-config Element


Customizes ZK's default behavior. For example,
<system-config>
<au-writer-class>my.AuWriter</au-writer-class>
<cache-provider-class>my.CacheProvider</cache-provider-class>
<crawlable>false</crawlable>
<disable-event-thread />
<engine-class>my.UiEngine</engine-class>
<failover-manager-class>my.FailoverManager</failover-manager-class>
<file-size-threshold>1024</file-size-threshold>
<id-generator-class>my.IdGenerator</id-generator-class>
<max-spare-threads>100</max-spare-threads>
<max-suspended-threads>100</max-suspended-threads>
<max-upload-size>5120</max-upload-size>
<max-process-time>3000</max-process-time>
<response-charset>UTF-8</response-charset>
<session-cache-class>my.SessionCache</session-cache-class>
<upload-charset>UTF-8</upload-charset>
<upload-charset-finder-class>my.CharsetFinder
</upload-charset-finder-class>
<ui-factory-class>my.UiFactory</ui-factory-class>
<url-encoder-class>my.URLEncoder</url-encoder-class>
<web-app-class>my.WebApp</web-app-class>
</system-config>

The au-decoder-class Element

88

The au-decoder-class Element


Syntax:
<au-decoder-class>a_class_name</au-decoder-class>
[Default: null (using the default JSON-based format)]
[since 5.0.4]
It specifies which class will be used to implement the AU decoder. The AU decoder is used to decode the AU
requests. The class must implement AuDecoder [1].
By default, the AU request is sent in the JSON format. If you prefer to use another format, you could provide an
implementation as follows.
1. Implement AuDecoder [1]
2. Register it by specifying it with the au-decoder-class element in WEB-INF/zk.xml
3. Override a JavaScript method called zk.Event, zk.Desktop) zAu.encode(int, zk.Event, zk.Desktop) [2] to encode
to the custom format

Version History
Version

Date

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ au/ AuDecoder. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ jsdoc/ _global_/ zAu. html#encode(int,

Content

The au-writer-class Element

89

The au-writer-class Element


Syntax:
<au-writer-class>a_class_name</au-writer-class>
[Default: HttpAuWriter

[1]

for ZK CE and PE, or SmartAuWriter

[2]

for ZK EE]

It specifies which class is used to implement the AU writer. The AU writer is used to generate the output and send it
to the client. The class must have a default constructor (without any argument), and implement the AuWriter [3]
interface.
There are two built-in implementations, HttpAuWriter and SmartAuWriter. The former one sends the output
the client after the requests are processed completely. On the other hand, the later one will send a partial output first
if the processing is taking too long (half of the value specified in the resend-delay element). By sending the
partial output, the client will know if the server is still alive.

Version History
Version

Date

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ au/ http/ HttpAuWriter. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zkmax/ au/ http/ SmartAuWriter. html#
[3] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ au/ AuWriter. html#

Content

The cache-provider-class Element

90

The cache-provider-class Element


Syntax:
<cache-provider-class>a_class_name</cache-provider-class>
[Default: SessionDesktopCacheProvider

[1]

It specifies which class is used to implement the desktop cache. The class must have a default constructor (without
any argument), and implement the DesktopCacheProvider [2] interface.
One instance of the cache provider is created and shared for each Web application, so you have to synchronize the
access properly.
Available implementations are as follows.
Class

Description

SessionDesktopCacheProvider
[1]
GlobalDesktopCacheProvider

[1]

It stores all desktops from the same session in one single cache. It is simple and fast, but not supporting
clustering.
It stores all desktops from the same Web application in one single cache. In other words, it doesn't count on
session at all.
[3]
It is useful because some Web server, e.g, BEA WebLogic , might be configured to use independent sessions
for each request.

Version History
Version

Date

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ impl/ SessionDesktopCacheProvider. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ sys/ DesktopCacheProvider. html#
[3] http:/ / www. bea. com/

Content

The config-parser-class Element

91

The config-parser-class Element


Syntax:
<config-parser-class>a_class_name</config-parser-class>
[Default: none]
[Since 5.0.0]
Specifies an application-specific parser to parse zk.xml. The parser must implement the ConfigParser [1] interface.

Version History
Version

Date

Content

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ ConfigParser. html#

The crawlable Element


Syntax:
<crawlable>true|false</crawlable>
[Default: false (disabled)]
[Since 5.0.0]
You are not able to specify whether content is crawlable, this works by generating tags within your content where
content only exists in the form of Javascript. This allows your content to be crawled by Google and is similar to how
the client-centric frameworks behave. However, there is a performance penalty so this option is disabled by default.
You can enable it by using the example below.
Suggestion : If your website is used by external users, turn this on for better Search Engine Optimization (SEO).
<system-config>
<crawlable>true</crawlable>
</system-config>

Version History
Version

Date

Content

The disable-event-thread Element

92

The disable-event-thread Element


Syntax:
<disable-event-thread>true|false</disable-event-thread>
[Default: true (disabled) for ZK 5 ad later; false (enabled) for ZK 2.x and 3x]
It specifies whether to disable the use of the event processing thread. If disabled, no event processing thread will be
used at all. In other words, all events are processed in the same thread that serves HTTP request (so called Servlet
thread) directly.
For better performance (and better compatible with other frameworks), it is recommended to disable the use of the
event processing thread. For more information, please refer to ZK Developer's Reference: Event Threads.
Enable the event thread only if the project does not need to integrate other frameworks (such as Spring), uses
Messagebox [1] and modal windows a lot, and does not have a lot of concurrent users.

Version History
Version

Date

Content

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zul/ Messagebox. html#

The disable-zscript Element


Syntax:
<disable-zscript>false|true</disable-zscript>
[Default: false (enabled)]
[since 5.0.8]
Specifies whether or not to disable the use of zscript (i.e., the interpreter). Once disabled, you can not embed
anymore zscript codes (such as Java and Groovy) in a ZUML page. ZK Loader will throw an exception, when
parsing a ZUML page with the zscript code.
It is suggested for production system, since the performance of Java interpretation is not good and the BeanShell
interpreter does not work well in the clustering environment.
<system-config>
<disable-zscript>true</disable-zscript>
</system-config>

The disable-zscript Element

93

Version History
Version
5.0.8

Date
August 2011

Content
This feature was introduced.

The engine-class Element


Syntax:
<engine-class>a_class_name</engine-class>
[Default: UiEngineImpl

[1]

It specifies which class is used to implement the UI Engine. The class must have a default constructor (without any
argument), and implement the UiEngine [2] interface.
One instance of the UI engine is created and shared for each Web application, so you have to synchronize the access
properly.

Version History
Version

Date

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ impl/ UiEngineImpl. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ sys/ UiEngine. html#

Content

The event-time-warning Element

94

The event-time-warning Element


Syntax:
<event-time-warning>a_number</event-time-warning>
[Default: 600]
[since 3.6.3]
It specifies the time, in seconds, to show a warning message if an event has been processinged longer than it.
Notice that this option is applicable only if the event processing thread is enabled (it is disabled by default). Please
refer to the disable-event-thread element for details.

Version History
Version

Date

Content

The failover-manager-class Element


Syntax:
<failover-manager-class>a_class_name</failover-manager-class>
[Default: none]
It specifies which class should be used to handle the failover. This is called to recover a desktop, when ZK cannot
locate the desktop. The class must have a default constructor (without any argument), and implement the
FailoverManager [1] interface.
In most cases, you don't need to provide any implementation. Rather, you can let Web servers to handle failover and
clustering for you by specifying the SerializableUiFactory [2] class in the ui-factory-class element as
described above.

Version History
Version

Date

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ sys/ FailoverManager. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ http/ SerializableUiFactory. html#

Content

The file-size-threshold Element

95

The file-size-threshold Element


Syntax:
<file-size-threshold>a_number</file-size-threshold>
[Default: 128]
[since 5.0.8]
It specifies the threshold at which a temporary file is created as a buffer, in kilobytes. In other words, the value is the
maximum size that will be stored in memory. A negative value implies default setting.

Version History
Version

Date

5.0.8

2011/8/11

Content
The element is introduced.

The id-generator-class Element


Syntax:
<id-generator-class>a_class_name</id-generator-class>
[Default: none]
It specifies which class should be used to generate the UUID of page and components, and ID of desktops. The class
must have a default constructor (without any argument), and implement the IdGenerator [1] interface.
One instance of the ID generator is created and shared for each Web application, so you have to synchronize the
access properly.
If no ID generator is specified, the default ID generation algorithm will be used.

Version History
Version

Date

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ sys/ IdGenerator. html#

Content

The label-location Element

96

The label-location Element


Syntax:
<label-location>a_uri</label-location>
[Default: /WEB-INF/i3-label.properties]
[Since 5.0.7]
It specifies the location of the properties file for the internationalization labels. If you have multiple properties files,
you could specify them one by one. For example,
<system-config>
<label-location>/WEB-INF/labels/order.properties</label-location>
<label-location>/WEB-INF/labels/invoice.properties</label-location>
</system-config>
Notice that, once specified, WEB-INF/i3-labels.properties is ignored. In other words, ZK loads only the
files specified in the label-location element. If you still want to load it, you have to specify it in
WEB-INF/zk.xml too.

<system-config>
<label-location>/WEB-INF/i3-label.properties</label-location><!-- if you still need i
<label-location>/WEB-INF/labels/order.properties</label-location>
<label-location>/WEB-INF/labels/invoice.properties</label-location>
</system-config>

Version History
Version
5.0.7

Date
March 2011

Content
This feature was introduced.

The max-spare-threads Element

97

The max-spare-threads Element


Syntax:
<max-spare-threads>a_number</max-spare-threads>
[Default: 100]
It specifies the maximum allowed number of the thread pool for queuing the idle event processing threads. ZK will
reuse the idle event processing threads by keeping them in a thread pool. The number specified here then controls the
maximum size of the pool.
A negative value indicates that there is no limit. Zero means no pool at all.
Notice this option is applicable only if the event processing thread is enabled (it is disabled by default). Please refer
to the disable-event-thread element for details.

Version History
Version

Date

Content

The max-suspended-threads Element


Syntax:
<max-suspended-threads>a_number</max-suspended-threads>
[Default: -1 (no limit)]
It specifies the maximum allowed number of the suspended event processing threads. A negative value indicates that
there is no limit at all.
An instance of SuspendNotAllowedException [1] is thrown, if an event processing thread is going to suspend and the
number of suspended threads exceeds the number specified here. You can use the error-page element to control
how to display this error, or catch the exception and handle it in a different way.'
Notice that this option is applicable only if the event processing thread is enabled (it is disabled by default). Please
refer to the disable-event-thread element for details.

Version History
Version

Date

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ SuspendNotAllowedException. html#

Content

The max-upload-size Element

98

The max-upload-size Element


Syntax:
<max-upload-size>a_number</max-upload-size>
[Default: 5120]
It specifies the maximum allowed size, in kilobytes, to upload a file from the client. A negative value indicates that
there is no limit.

Version History
Version

Date

Content

The max-process-time Element


Syntax:
<max-process-time>a_number</max-process-time>
[Default: 3000]
It specifies the maximum allowed time to process events, in milliseconds. It must be positive. ZK will keep
processing the requests until all requests are processed, or the maximum allowed time expires.
Notice that this setting has no effect on AU requests. Rather, it controls the number of the requests caused by the
client-polling server push. In other words, if there are multiple pending server-push based on the client-polling, ZK
will handle them one-by-one until all are served or the time expires.

Version History
Version

Date

Content

The response-charset Element

99

The response-charset Element


Syntax:
<response-charset>a_charset|UTF-8</response-charset>
[Default: UTF-8]
It specifies the charset for the rendering result of a ZUML page. In other words, it is used to load the ZUML page by
the ZK Loader (i.e., DHtmlLayoutServlet).
If you want to use the container's default value, you can specify an empty string as follows.
<response-charset></response-charset>

Version History
Version

Date

Content

The session-cache-class Element


Syntax:
<session-cache-class>a_class_name</session-cache-class>
[Default: SimpleSessionCache

[1]

It specifies the session cache used to store ZK sessions. It must implement the SessionCache [2] interface.
By default, SimpleSessionCache [1] is used and it stores the ZK session in an attribute of the native session (i.e.,
HttpSession or PortletSession).

Version History
Version

Date

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ http/ SimpleSessionCache. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ sys/ SessionCache. html#

Content

The upload-charset Element

100

The upload-charset Element


Syntax:
<upload-charset>a_charset|UTF-8</upload-charset>
[Default: UTF-8]
It specifies the charset (aka., encoding) for the uploaded text files if no charset is specified with the content type.
If the uploaded file is binary, there is no encoding issue at all.
Notice that the upload-charset-finder-class element has the higher priority.

Version History
Version

Date

Content

The upload-charset-finder-class Element


Syntax:
<upload-charset-finder-class>a_class_name</upload-charset-finder-class>
[Default: null]
It specifies the finder that determines charset (aka.., encoding) for the uploaded text files if no charset is specified
with the content type.
If the uploaded file is binary, there is no encoding issue at all.
The finder must implement the CharsetFinder [1] interface. Then, when a text file is uploaded, the getCharset
method is called and it can determines the encoding based on the content type and/or the content of the uploaded file.
Notice that it has the higher priority than the upload-charset element, see above.

Version History
Version

Date

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ util/ CharsetFinder. html#

Content

The ui-factory-class Element

101

The ui-factory-class Element


Syntax:
<ui-factory-class>a_class_name</ui-factory-class>
[Default: SimpleUiFactory

[1]

It specifies which class is used to create desktops and pages, and to convert URL to a page definition. The class must
have a default constructor (without any argument), and implement the UiFactory [2] interface.
One instance of the UI factory is created and shared for each Web application, so you have to synchronize the access
properly.
A common use is to load page definitions and other UI information from the database, rather than from the resources
of the Web application.
In addition, you might use it to implement a controller in a MVC model, such that it creates the correct desktop
based on the request URL.
Available implementations are as follows.
Class
SimpleUiFactory

Description
[1]

SerializableUiFactory
[2]

The default UI factory. The sessions generated by this factory is not serializable
The sessions generated by this factory is serializable. If you want to store sessions when the Web server is shutdown and
restore them after it started, you can specify this implementation.

Version History
Version

Date

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ http/ SimpleUiFactory. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ sys/ UiFactory. html#

Content

The web-app-class Element

102

The web-app-class Element


Syntax:
<web-app-class>a_class_name</web-app-class>
[Default: SimpleWebApp

[1]

It specifies which class is used to implement the Web application. The class must have a default constructor (without
any argument), and implement both the WebApp [1] and WebAppCtrl [2] interfaces. Instead of implementing from
scratch, you can extend it from the AbstractWebApp [3] or SimpleWebApp [1] classes.
<system-config>
<web-app-class>foo.MyKillerApp</web-app-class>
</system-config>
Alternatively, you could use the web-app-factory-class element instead. Notice, if both specified, the
web-app-factory-class element has the higher priority.

Version History
Version

Date

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ http/ SimpleWebApp. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ sys/ WebAppCtrl. html#
[3] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ impl/ AbstractWebApp. html#

Content

The web-app-factory-class Element

103

The web-app-factory-class Element


Syntax:
<web-app-factory-class>a_class_name</web-app-factory-class>
[Default: none (and SimpleWebApp
[since 6.0.0]

[1]

is used)]

It specifies which class is used to instantiate the instance of the implementation of the Web application. The class
must have a default constructor (without any argument), and implement the WebAppFactory [1] interface.
<system-config>
<web-app-factory-class>foo.MyKillerAppFactory</web-app-factory-class>
</system-config>
Alternatively, you could use the web-app-class element instead. Notice, if both specified, the web-app-factory-class
element has the higher priority.

Version History
Version
6.0.0

Date
September 2011

Content
This feature was introduced

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ sys/ WebAppFactory. html#

The system-property Element

104

The system-property Element


<system-property>
<name>any name</name>
<value>any value</value>
</system-property>
Specifies a system properties with the system-property element. The above example is equivalent to
System.setProperty("any name", "any value");

Version History
Version

Date

Content

The zscript-config Element


Syntax:
<zscript-config>
<language-name>a_programming_language</language-name>
<interpreter-class>a_class_name</interpreter-class>
</zscript-config>
[Optional]
Specifies an interpreter to interpret the zscript code. The allowed child element is language-name and
interpreter-class. You might have multiple zscript-config elements in one zk.xml.
<zscript-config>
<language-name>Java</language-name><!-- case insensitive -->
<interpreter-class>my.MySuperJavaInterpreter</interpreter-class>
</zscript-config>
Note: Unlike most other configurations defined in WEB-INF/zk.xml, the definitions defined in
zscript-config are applied to all Web applications sharing the same zk.jar.
In other words, the scripting language defined here are visible to all Web applications sharing the same zk.jar.
Furthermore, it may cause errors in another Web application, if the classes or resources are available only in the Web
application defining this.
Thus, if it is an issue, just put zk.jar and relevant ZK libraries under the WEB-INF/lib directory.

The zscript-config Element

105

The language-name Element


[Required]
It specifies the language name. It is case insensitive. The previous implementation with the same language name will
be replaced if any.

The interpreter-class Element


[Required]
It specifies the implementation class. It must implement the Interpreter [1] interface. Instead of implementing it from
scratch, you can derive from the GenericInterpreter [2] class. If you want to support the hierarchical scopes (i.e., one
interpreter scope per namespace), it can also implement the HierachicalAware [3] interface.

Version History
Version

Date

Content

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ scripting/ Interpreter. html#
[2] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ scripting/ util/ GenericInterpreter. html#
[3] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ scripting/ HierachicalAware. html#

JAR File's config.xml


A JAR file could contain a configuration file that will override the default configuration of a ZK application. The file
must be named as config.xml and placed under the /metainfo/zk directory. Of course, the configuration
specified in WEB-INF/zk.xml has higher priority. It will override the configuration specified in
/metainfo/zk/config.xml.
By use of config.xml, a JAR file could change the default configuration without a user's notice, such as adding a
desktop listener, setting a library property, and so on. For more information, please refer to ZK Developer's
Reference: Packing Code.

Samples

106

Samples
Here is a sample of /metainfo/zk/config.xml (from zkex.jar):
<config>
<config-name>zkex</config-name><!-- used to resolve dependency -->
<depends>zk</depends>
<version>
<version-class>org.zkoss.zkex.Version</version-class>
<version-uid>5.0.6</version-uid>
<zk-version>5.0.0</zk-version><!-- or later -->
</version>
<listener>
<listener-class>org.zkoss.zkex.init.WebAppInit</listener-class>
</listener>
<library-property>
<name>org.zkoss.zul.chart.engine.class</name>
<value>org.zkoss.zkex.zul.impl.JFreeChartEngine</value>
</library-property>
<library-property>
<name>org.zkoss.zul.captcha.engine.class</name>
<value>org.zkoss.zkex.zul.impl.JHLabsCaptchaEngine</value>
</library-property>
</config>
As shown, you could specify the listener and library properties in /metainfo/zk/config.xml.

Version History
Version

Date

Content

The client-config Element

107

The client-config Element


Syntax:
<client-config>
<client-config>
[Optional]
It is used to customize the behavior of ZK Client Engine. The use is the same as zk.xml's client-config element,
except that it is specified in a JAR file's config.xml rather than WEB-INF/zk.xml.

Version History
Version

Date

Content

The config-name Element


Syntax:
<config-name>a_name</config-name>
[Required]
It specifies the configuration's name. The name must be unique if it is referenced by other configuration files (with
the depends element).

Version History
Version

Date

Content

The depends Element

108

The depends Element


Syntax:
<depends>a_list_of_config_names</depends>
[Optional]
It specifies what configurations this configuration depends on. If specified, this configuration will be parsed after all
specified configurations are parsed.
Example,
<depends>zkex, zkmax</depends>
which means this configuration won't be parsed until /metainfo/zk/config.xml in both zkex and zkmax
are parsed.

Version History
Version

Date

Content

The device-config Element


Syntax:
<device-config>
</device-config>
[Optional]
It is used to specify a device, or customizes an existent device. The use is the same as zk.xml's device-config
element, except that it is specified in a JAR file's config.xml rather than WEB-INF/zk.xml.

Version History
Version

Date

Content

The language-config Element

109

The language-config Element


Syntax:
<language-config>
<addon-uri>a_uri</addon-uri>
<language-uri>a_uri</language-uri>
</language-config>
[Optional]
It specifies the additional language addons and/or definitions.
The use is the same as ZK Configuration Reference/zk.xml/The language-config Element, except it is specified in a
JAR file's config.xml rather than WEB-INF/zk.xml.
Notice that the URI is related to the class path, such as /metainfo/zk/lang-fb.xml. In addition,
/metainfo/zk/lang.xml and /metainfo/zk/lang-addon.xml are always loaded, no matter if this
element is specified in config.xml.
Since config.xml is parsed before a Web application has been initialized, you could specify the URI related to
the resources of a Web application.

Version History
Version
5.0.7

Date
May 2011

Content
The language-config element was allowed in config.xml.

The library-property Element

110

The library-property Element


Syntax:
<library-property>
<name>any name</name>
<value>any value</value>
</library-property>
Species a library-level property with the library-property element.
It is the same as WEB-INF/zk.xml. Please refer to zk.xml's library-property for more information.
For a complete list of available library properties, please refer to the Library Properties section.

Version History
Version

Date

Content

The listener Element


Syntax:
<listener>
<listener-class>a_class_name</listener-class>
</listener>
It is used to specify the class name of a listener. The use is the same as zk.xml's listener element, except it is
specified in a JAR file's config.xml rather than WEB-INF/zk.xml.

Version History
Version

Date

Content

The preference Element

111

The preference Element


Syntax:
<preference>
<name>any name</name>
<value>any value</value>
</preference>
[Optional]
It is used to specify a preference. The use is the same as zk.xml's preference element, except it is specified in a JAR
file's config.xml rather than WEB-INF/zk.xml.

Version History
Version

Date

Content

The system-config Element


Syntax:
<system-config>
</system-config>
[Optional]
It is ued to customize ZK's default behavior. The use is the same as zk.xml's system-config element, except it is
specified in a JAR file's config.xml rather than WEB-INF/zk.xml.

Version History
Version

Date

Content

The version Element

112

The version Element


Syntax:
<version>
<version-class>a_class</version-class>
<version-uuid>a_version</version-uuid>
<zk-version>a_version</zk-version>
</version>
[Optional]
It specifies the version of this configuration. It also controls whether to ignore this configuration.
First, ZK checks if the specified class (<version-calss>) matches the version (<version-uuid>). Second, it checks if
ZK's version is the same or larger than the version specified in <zk-version>.
The specified class, if any, must have a static field called UID. ZK will compare its value with the version specified
in <version-uuid>. For example,
package foo;
public class MyAddon {
public static public static final String UID = "1.0.3";
}
Then, you could specify it as follows.
<version>
<version-class>foo.MyAddon</version-class>
<version-uid>1.0.3</version-uid>
<zk-version>5.0.0</zk-version>
</version>
which means foo.MyAddon.UID must be 1.0.3, and WebApp.getVersion() [1] must be 5.0.0 or later.

Version History
Version

Date

References
[1] http:/ / www. zkoss. org/ javadoc/ latest/ zk/ org/ zkoss/ zk/ ui/ WebApp. html#getVersion()

Content

The zscript-config Element

113

The zscript-config Element


Syntax:
<zscript-config>
<language-name>a_programming_language</language-name>
<interpreter-class>a_class_name</interpreter-class>
</zscript-config>
[Optional]
It is used to specify an interpreter to interpret the zscript code. The use is the same as zk.xml's zscript-config
element, except it is specified in a JAR file's config.xml rather than WEB-INF/zk.xml.

Version History
Version

Date

Content

Article Sources and Contributors

Article Sources and Contributors


ZK Configuration Reference Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference Contributors: Alicelin, Southerncrossie, Sphota, Tmillsclare, Tomyeh
web.xml Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/web.xml Contributors: Alicelin, Maya001122, Tmillsclare
ZK Loader Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/web.xml/ZK_Loader Contributors: Alicelin, Maya001122, Tmillsclare, Tomyeh
ZK AU Engine Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/web.xml/ZK_AU_Engine Contributors: Maya001122, Tmillsclare, Tomyeh
ZK Session Cleaner Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/web.xml/ZK_Session_Cleaner Contributors: Maya001122, Tmillsclare, Tomyeh
ZK Filter Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/web.xml/ZK_Filter Contributors: Maya001122, Tmillsclare, Tomyeh
DSP Loader Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/web.xml/DSP_Loader Contributors: Ejikipaticy, Maya001122, Sphota, Tmillsclare, Tomyeh
Sample of web.xml Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/web.xml/Sample_of_web.xml Contributors: Maya001122, Tmillsclare
zk.xml Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml Contributors: Alicelin, Maya001122, Tmillsclare, Tomyeh
The client-config Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_client-config_Element Contributors: Char, Maya001122, Tmillsclare,
Tomyeh
The debug-js Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_client-config_Element/The_debug-js_Element Contributors: Char, Flyworld,
Tomyeh
The disable-behind-modal Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_client-config_Element/The_disable-behind-modal_Element
Contributors: Char, Tomyeh
The error-reload Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_client-config_Element/The_error-reload_Element Contributors: Char,
Tomyeh
The keep-across-visits Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_client-config_Element/The_keep-across-visits_Element Contributors:
Char, Tomyeh
The package Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_client-config_Element/The_package_Element Contributors: Char, Tomyeh
The processing-prompt-delay Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_client-config_Element/The_processing-prompt-delay_Element
Contributors: Char, Tomyeh
The resend-delay Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_client-config_Element/The_resend-delay_Element Contributors: Char,
Tomyeh
The tooltip-delay Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_client-config_Element/The_tooltip-delay_Element Contributors: Char,
Tomyeh
The desktop-config Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_desktop-config_Element Contributors: Char, Maya001122, Tmillsclare,
Tomyeh
The desktop-timeout Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_desktop-config_Element/The_desktop-timeout_Element Contributors:
Char, Tomyeh
The disable-theme-uri Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_desktop-config_Element/The_disable-theme-uri_Element
Contributors: Alicelin, Char, Tomyeh
The extendlet-check-period Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_desktop-config_Element/The_extendlet-check-period_Element
Contributors: Alicelin, Char, Tomyeh
The file-check-period Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_desktop-config_Element/The_file-check-period_Element
Contributors: Alicelin, Char, Tomyeh
The repeat-uuid Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_desktop-config_Element/The_repeat-uuid_Element Contributors: Char,
Tomyeh
The theme-uri Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_desktop-config_Element/The_theme-uri_Element Contributors: Alicelin,
Char, Tomyeh
The theme-provider-class Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_desktop-config_Element/The_theme-provider-class_Element
Contributors: Alicelin, Char, Tomyeh
The device-config Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_device-config_Element Contributors: Alicelin, Char, Flyworld,
Maya001122, Tmillsclare, Tomyeh
The device-class Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_device-config_Element/The_device-class_Element Contributors: Char,
Tomyeh
The device-type Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_device-config_Element/The_device-type_Element Contributors: Char,
Tomyeh
The embed Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_device-config_Element/The_embed_Element Contributors: Alicelin, Char,
Tomyeh
The server-push-class Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_device-config_Element/The_server-push-class_Element Contributors:
Alicelin, Char, Tomyeh
The unavailable-message Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_device-config_Element/The_unavailable-message_Element
Contributors: Char, Tomyeh
The error-page Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_error-page_Element Contributors: Alicelin, Maya001122, Tmillsclare,
Tomyeh
The language-config Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_language-config_Element Contributors: Alicelin, Maya001122,
Tmillsclare, Tomyeh

114

Article Sources and Contributors


The library-property Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_library-property_Element Contributors: Alicelin, Maya001122,
Tmillsclare, Tomyeh
The Library Properties Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties Contributors: Char, Jumperchen, Maya001122,
Samchuang, Tmillsclare, Tomyeh
class.mold Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/class.mold Contributors: Char, Tomyeh
org.zkoss.util.label.classpath.charset Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.util.label.classpath.charset
Contributors: Char, Tomyeh
org.zkoss.util.label.web.charset Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.util.label.web.charset Contributors:
Char, Tomyeh
org.zkoss.util.label.web.location Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.util.label.web.location Contributors:
Alicelin, Char, Tomyeh
org.zkoss.util.logging.config.file Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.util.logging.config.file Contributors:
Tomyeh
org.zkoss.util.logging.hierarchy.disabled Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.util.logging.hierarchy.disabled
Contributors: Jumperchen, Tomyeh
org.zkoss.util.logging.realCauseBriefly Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.util.logging.realCauseBriefly
Contributors: Char, Tomyeh
org.zkoss.web.classWebResource.cache Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.web.classWebResource.cache
Contributors: Alicelin, Char, Tomyeh
org.zkoss.web.classWebResource.cache.CSS.hours Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.web.classWebResource.cache.CSS.hours Contributors: Char, Tomyeh
org.zkoss.web.classWebResource.cache.etag Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.web.classWebResource.cache.etag Contributors: Char
org.zkoss.web.util.resource.dir Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.web.util.resource.dir Contributors:
Alicelin, Char, Tomyeh, Tonyq
org.zkoss.web.servlet.http.URLEncoder Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.web.servlet.http.URLEncoder
Contributors: Alicelin, Char
org.zkoss.zk.config.path Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zk.config.path Contributors: Alicelin,
Tmillsclare, Tomyeh
org.zkoss.zk.scripting.bsh.method.serializable Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zk.scripting.bsh.method.serializable Contributors: Jimmyshiau, Southerncrossie
org.zkoss.zk.ui.composer.autowire.zscript Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zk.ui.composer.autowire.zscript Contributors: Alicelin, Tomyeh
org.zkoss.zk.ui.composer.autowire.xel Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zk.ui.composer.autowire.xel
Contributors: Alicelin, Tomyeh
org.zkoss.zk.ui.EmulateIE7 Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zk.ui.EmulateIE7 Contributors: Alicelin,
Char, Tomyeh
org.zkoss.zk.ui.event.EventQueueProvider.class Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zk.ui.event.EventQueueProvider.class Contributors: Char
org.zkoss.zk.ui.input.grouping.allowed Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zk.ui.input.grouping.allowed
Contributors: Char
org.zkoss.zk.ui.macro.autoforward.disabled Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zk.ui.macro.autoforward.disabled Contributors: Char, Tomyeh
org.zkoss.zk.ui.macro.autowire.disabled Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zk.ui.macro.autowire.disabled
Contributors: Char, Tomyeh
org.zkoss.zk.ui.metainfo.page.Loader.class Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zk.ui.metainfo.page.Loader.class Contributors: Char, Tomyeh
org.zkoss.zk.ui.uuidRecycle.disabled Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zk.ui.uuidRecycle.disabled
Contributors: Alicelin, Char
org.zkoss.zk.ui.sys.XMLResourcesLocator.class Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zk.ui.sys.XMLResourcesLocator.class Contributors: Alicelin, Char, Tomyeh
org.zkoss.zk.WPD.cache Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zk.WPD.cache Contributors: Alicelin,
Tomyeh, Tonyq
org.zkoss.zkmax.zul.FiledownloadListener.class Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zkmax.zul.FiledownloadListener.class Contributors: Alicelin, Char
org.zkoss.zul.borderlayout.animation.disabed Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.borderlayout.animation.disabed Contributors: Jumperchen
org.zkoss.zul.client.rod Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.client.rod Contributors: Char, Tomyeh,
Tonyq
org.zkoss.zul.include.mode Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.include.mode Contributors: Char,
Tomyeh
org.zkoss.zul.grid.autoSort Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.grid.autoSort Contributors: Alicelin,
Jimmyshiau
org.zkoss.zul.grid.preloadSize Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.grid.preloadSize Contributors:
Alicelin, Jimmyshiau

115

Article Sources and Contributors


org.zkoss.zul.grid.initRodSize Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.grid.initRodSize Contributors:
Alicelin, Jimmyshiau
org.zkoss.zul.listbox.checkmarkDeselectOthers Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.listbox.checkmarkDeselectOthers Contributors: Char, Tomyeh
org.zkoss.zul.listbox.rightSelect Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.listbox.rightSelect Contributors:
Alicelin, Char, Jimmyshiau, Tomyeh
org.zkoss.zul.listbox.groupSelect Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.listbox.groupSelect Contributors:
SimonPai
org.zkoss.zul.listbox.autoSort Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.listbox.autoSort Contributors:
Alicelin, Jimmyshiau
org.zkoss.zul.listbox.preloadSize Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.listbox.preloadSize Contributors:
Jimmyshiau
org.zkoss.zul.listbox.initRodSize Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.listbox.initRodSize Contributors:
Jimmyshiau
org.zkoss.zul.numberFormat Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.numberFormat Contributors:
Jumperchen
org.zkoss.zul.progressbox.position Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.progressbox.position
Contributors: Alicelin, Char
org.zkoss.zul.theme.browserDefault Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.theme.browserDefault
Contributors: Alicelin, Char
org.zkoss.zul.theme.fontFamilyC Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.theme.fontFamilyC Contributors:
Char
org.zkoss.zul.theme.fontFamilytT Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.theme.fontFamilytT
Contributors: Char
org.zkoss.zul.theme.fontSizeM Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.theme.fontSizeM Contributors: Char
org.zkoss.zul.theme.fontSizeMS Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.theme.fontSizeMS Contributors:
Char
org.zkoss.zul.theme.fontSizeS Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.theme.fontSizeS Contributors: Char
org.zkoss.zul.theme.fontSizeXS Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.theme.fontSizeXS Contributors:
Char
org.zkoss.zul.tree.checkmarkDeselectOthers Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.tree.checkmarkDeselectOthers Contributors: Alicelin, Char, Jimmyshiau,
Tomyeh
org.zkoss.zul.tree.rightSelect Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.tree.rightSelect Contributors: Alicelin,
Char
org.zkoss.zul.tree.autoSort Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zul.tree.autoSort Contributors: Alicelin,
Jimmyshiau
The listener Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element Contributors: Char, Maya001122, Tmillsclare, Tomyeh
The org.zkoss.zk.ui.event.EventThreadCleanup interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.event.EventThreadCleanup_interface Contributors: Char, Tomyeh
The org.zkoss.zk.ui.event.EventThreadInit Interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.event.EventThreadInit_Interface Contributors: Char, Tomyeh
The org.zkoss.zk.ui.event.EventThreadResume interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.event.EventThreadResume_interface Contributors: Alicelin, Char,
Tomyeh
The org.zkoss.zk.ui.event.EventThreadSuspend interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.event.EventThreadSuspend_interface Contributors: Char, Tomyeh
The org.zkoss.zk.ui.util.Composer interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.util.Composer_interface Contributors: Alicelin, Char, Tomyeh
The org.zkoss.zk.ui.util.DesktopCleanup interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.util.DesktopCleanup_interface Contributors: Alicelin, Char, Tomyeh
The org.zkoss.zk.ui.util.DesktopInit interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.util.DesktopInit_interface Contributors: Char, Tomyeh
The org.zkoss.zk.ui.util.EventInterceptor interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.util.EventInterceptor_interface Contributors: Char, Tomyeh
The org.zkoss.zk.ui.util.ExecutionCleanup interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.util.ExecutionCleanup_interface Contributors: Char, Tomyeh
The org.zkoss.zk.ui.util.ExecutionInit interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.util.ExecutionInit_interface Contributors: Alicelin, Char, Tomyeh
The org.zkoss.zk.ui.util.Initiator interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.util.Initiator_interface Contributors: Alicelin, Tomyeh
The org.zkoss.zk.ui.util.Monitor interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.util.Monitor_interface Contributors: Alicelin, Char, Tomyeh
The org.zkoss.zk.ui.util.PerformanceMeter interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.util.PerformanceMeter_interface Contributors: Alicelin, Char, Tomyeh

116

Article Sources and Contributors


The org.zkoss.zk.ui.util.RequestInterceptor interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.util.RequestInterceptor_interface Contributors: Alicelin, Char, Tomyeh
The org.zkoss.zk.ui.util.SessionCleanup interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.util.SessionCleanup_interface Contributors: Char, Tomyeh
The org.zkoss.zk.ui.util.SessionInit interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.util.SessionInit_interface Contributors: Char, Pipe, Tomyeh
The org.zkoss.zk.ui.util.UiLifeCycle interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.util.UiLifeCycle_interface Contributors: Char, Tomyeh
The org.zkoss.zk.ui.util.URIInterceptor interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.util.URIInterceptor_interface Contributors: Alicelin, Char, Tomyeh
The org.zkoss.zk.ui.util.WebAppCleanup interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.util.WebAppCleanup_interface Contributors: Char, Tomyeh
The org.zkoss.zk.ui.util.WebAppInit interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.util.WebAppInit_interface Contributors: Char, Tomyeh
The org.zkoss.zk.ui.sys.PropertiesRenderer interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.sys.PropertiesRenderer_interface Contributors: Tomyeh
The org.zkoss.zk.ui.sys.SEORenderer interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.zk.ui.sys.SEORenderer_interface Contributors: Alicelin, Tomyeh
The org.zkoss.xel.VariableResolver Interface Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_listener_Element/The_org.zkoss.xel.VariableResolver_Interface Contributors: Alicelin, Char, Tmillsclare,
Tomyeh
The log Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_log_Element Contributors: Maya001122, Tmillsclare
The preference Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_preference_Element Contributors: Alicelin, Maya001122, Tmillsclare,
Tomyeh
The Preferences Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Preferences Contributors: Alicelin, Tomyeh
org.zkoss.zk.ui.WebApp.name Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_Preferences/org.zkoss.zk.ui.WebApp.name Contributors: Alicelin,
Tomyeh
The richlet Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_richlet_Element Contributors: Alicelin, Tomyeh
The richlet-mapping Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_richlet-mapping_Element Contributors: Alicelin, Benbai, Jeanher,
Tomyeh
The xel-config Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_xel-config_Element Contributors: Henrichen, Maya001122, Tmillsclare,
Tomyeh
The session-config Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_session-config_Element Contributors: Flyworld, Maya001122,
Tmillsclare, Tomyeh
The automatic-timeout Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_session-config_Element/The_automatic-timeout_Element
Contributors: Alicelin, Tomyeh
The device-type Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_session-config_Element/The_device-type_Element Contributors: Tomyeh
The max-desktops-per-session Element Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_session-config_Element/The_max-desktops-per-session_Element Contributors: Alicelin, Tomyeh
The max-pushes-per-session Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_session-config_Element/The_max-pushes-per-session_Element
Contributors: Alicelin, Tomyeh
The max-requests-per-session Element Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_session-config_Element/The_max-requests-per-session_Element Contributors: Alicelin, Tomyeh
The session-timeout Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_session-config_Element/The_session-timeout_Element Contributors:
Tomyeh
The timeout-message Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_session-config_Element/The_timeout-message_Element Contributors:
Flyworld, Tomyeh
The timeout-uri Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_session-config_Element/The_timeout-uri_Element Contributors: Alicelin,
Tomyeh
The timer-keep-alive Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_session-config_Element/The_timer-keep-alive_Element Contributors:
Alicelin, Jimmyshiau, Jumperchen, Tomyeh
The system-config Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element Contributors: Flyworld, Maya001122, SimonPai,
Tmillsclare, Tomyeh
The au-decoder-class Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_au-decoder-class_Element Contributors:
Alicelin, Tomyeh
The au-writer-class Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_au-writer-class_Element Contributors:
Alicelin, Tomyeh
The cache-provider-class Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_cache-provider-class_Element
Contributors: Alicelin, Tomyeh
The config-parser-class Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_config-parser-class_Element
Contributors: Tomyeh
The crawlable Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_crawlable_Element Contributors: Alicelin,
Tomyeh

117

Article Sources and Contributors


The disable-event-thread Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_disable-event-thread_Element
Contributors: Tomyeh
The disable-zscript Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_disable-zscript_Element Contributors:
Alicelin, Iantsai, Tomyeh
The engine-class Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_engine-class_Element Contributors: Alicelin,
Tomyeh
The event-time-warning Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_event-time-warning_Element
Contributors: Alicelin, Tomyeh
The failover-manager-class Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_failover-manager-class_Element
Contributors: Alicelin, Tomyeh
The file-size-threshold Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_file-size-threshold_Element
Contributors: SimonPai
The id-generator-class Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_id-generator-class_Element
Contributors: Alicelin, Tomyeh
The label-location Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_label-location_Element Contributors:
Tomyeh
The max-spare-threads Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_max-spare-threads_Element
Contributors: Alicelin, Tomyeh
The max-suspended-threads Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_max-suspended-threads_Element
Contributors: Alicelin, Tomyeh
The max-upload-size Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_max-upload-size_Element Contributors:
Alicelin, Tomyeh
The max-process-time Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_max-process-time_Element
Contributors: Alicelin, Tomyeh
The response-charset Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_response-charset_Element Contributors:
Tomyeh
The session-cache-class Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_session-cache-class_Element
Contributors: Tomyeh
The upload-charset Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_upload-charset_Element Contributors:
Tomyeh
The upload-charset-finder-class Element Source:
http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_upload-charset-finder-class_Element Contributors: Tomyeh
The ui-factory-class Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_ui-factory-class_Element Contributors:
Alicelin, Tomyeh
The web-app-class Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_web-app-class_Element Contributors:
Alicelin, Tomyeh
The web-app-factory-class Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-config_Element/The_web-app-factory-class_Element
Contributors: Tomyeh
The system-property Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_system-property_Element Contributors: Maya001122, Tmillsclare,
Tomyeh
The zscript-config Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/zk.xml/The_zscript-config_Element Contributors: Maya001122, Tmillsclare, Tomyeh
JAR File's config.xml Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/JAR_File%27s_config.xml Contributors: Alicelin, Tomyeh
Samples Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/JAR_File%27s_config.xml/Samples Contributors: Tomyeh
The client-config Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/JAR_File%27s_config.xml/The_client-config_Element Contributors: Alicelin, Tomyeh
The config-name Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/JAR_File%27s_config.xml/The_config-name_Element Contributors: Tomyeh
The depends Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/JAR_File%27s_config.xml/The_depends_Element Contributors: Tomyeh
The device-config Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/JAR_File%27s_config.xml/The_device-config_Element Contributors: Alicelin,
Tomyeh
The language-config Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/JAR_File%27s_config.xml/The_language-config_Element Contributors: Alicelin,
Tomyeh
The library-property Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/JAR_File%27s_config.xml/The_library-property_Element Contributors: Tomyeh
The listener Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/JAR_File%27s_config.xml/The_listener_Element Contributors: Tomyeh
The preference Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/JAR_File%27s_config.xml/The_preference_Element Contributors: Tomyeh
The system-config Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/JAR_File%27s_config.xml/The_system-config_Element Contributors: Tomyeh
The version Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/JAR_File%27s_config.xml/The_version_Element Contributors: Tomyeh
The zscript-config Element Source: http://books.zkoss.org/index.php?title=ZK_Configuration_Reference/JAR_File%27s_config.xml/The_zscript-config_Element Contributors: Tomyeh

118

Image Sources, Licenses and Contributors

Image Sources, Licenses and Contributors


File:ZK_Configuration_Reference-debug-js.png Source: http://books.zkoss.org/index.php?title=File:ZK_Configuration_Reference-debug-js.png License: unknown Contributors: Flyworld

119