ZK 3.0.9

Released on February 5, 2009.

Download Now

Getting Simpler and Richer

New Feature Highlight

  • lang-addon.xml supports library-property.
  • Able to access the URI of the error page
  • A way to instantiate a macro programmingly w/o macro declaration
  • Enhance <listheader> auto sorting to sort on fieldnames

Feature Updates

  • 89 XUL and 83 HTML off-the-shelf components.
    • Tabbox, grid, listbox, tree, menu, combobox, bandbox, datebox, chart, hbox, vbox, window, slider, paging, audio, image, timer, include, iframe...
    • Drag-and-drop supported by all components, such that users can drag components and drop them to any other or particular set of components.
    • Context menus and customizable tooltips supported by all components, such that a menu or any popup appears when user click, right-click or move the mouse over a component.
    • Customizable sorting of listbox, grid and children of any component with 100% Java codes (java.lang.Comparator).
    • Auto-completion for combobox.
    • Load on demand with writing Java codes.
    • Live data for listbox.
    • Grids, listboxes and trees with sizable columns.
    • All components are cloneable and serializable.
    • Validation and formatting for any input components, such as regular expression and $#,##0.
    • 100% Java API of Google Maps, FCKeditor, DOJO, and Timeline components.
  • Event-driven, server-centric model
    • More than 20 events are supported: onChange, onChanging, onScroll, onSelect, onShow, onZIndex...
    • All events are processed at the server. No hurdle to communicate between clients and servers.
    • All events are synchronized. No racing condition to worry about.
  • ZK User-interface Markup Language (ZUML).
    • Rich user interface could be designed in ZUML as simple as authoring HTML pages.
    • Powerful yet intuitive control flow by the if, unless and forEach attribute.
    • Scripting in EL expressions and your favorite scripting languages, include but not limited to Java, JavaScript, Ruby and Groovy.
    • Hot changes and updates without restarting your Web applications.
    • Annotations that allow a page to acess database with zero Java codes.
  • Browser history management.
    • Add states to browser's back button history. Then, users can bookmark and use the back and forward button to navigate different states of the same ZK desktop.
  • Simple yet boundless component model.
    • Macro components. Developing a full-feature new component by using another ZUML pages.
    • Inheritable customization. Developing a new component by extending existent components.
    • Seamlessly and easily to encapsulate pure-client components as ZK components with 100% Java API.
    • Customizing components with pre-compiled Java classes, or by scripting in your favorite scripting languages, include but not limited to Java, JavaScript, Ruby and Groovy. The choice is yours.
  • Simple yet flexible threading model.
    • Thread-safe component handling.
    • True server-side Modal dialog.
    • Suspend and resume event listeners freely.
  • 100% Customizable User-Interface factory.
    • Loading ZUML pages not only from Web contents but also any repository such as database.
    • Customizing the features of sessions, desktops and pages.

New Features

  • 2354640: lang-addon.xml supports library-property
  • 2433264: Able to access the URI of the error page
  • 2493161: A way to instantiate a macro programmingly w/o macro declaration
  • 2494920: Enhance auto sorting to sort on fieldnames
  • 2512555: Converter convert date to String with annotated format
  • 2559476: A way to turn off the filtering of clicks

Bug Fixes

  • 2051014: NPE error with ZK + Tomcat Clusteriing
  • 2165067: Fail to remove children via invoking it.previous()
  • 2198961: AuUploader ignores 'nextURI' parameter
  • 2208873: fail to loop an array declared in zsciprt using python
  • 2241429: Cross-Site Scripting Vulnerability in ZK
  • 2217915: filedownload doesn't work when opera opera 9.5.x
  • 2337652: ID space cleanup problem if not attached to a page
  • 2388345: Defect in use of forEach, arrays and data binding
  • 2439090: Groupbox onVisi not called when visible.
  • 2443726: Iframe with PDF cannot show when hidden (Firefox only)
  • 2433176: Radiogroup.getSelectedItem and Index returns first item
  • 2446672: toolbarbutton, disibled,can click image to fire event
  • 2446682: Components.addForwards() occus an dead loop
  • 2448170: i3-label-en.properties never use
  • 2448099: FF only.SetAttr fail when addEventListener with $ event name
  • 2448987: Unexpected ListModelList.subList() behaviour
  • 2464484: Binding selectedItem of Radiogroup causes StackOverflowExcep
  • 2468048: Namespace is not consitent with component hierarchy
  • 2480892: Native component with forEach and non-native child incorrect
  • 2487562: Keyboard problem in textbox inside a listbox (Firefox 3.0.5)
  • 2463857: Popup window positioning problem and wierd behaviour!
  • 2493245: zscript failed badly if macro's setMacroURI before setParent
  • 2522437: Error display after invalidate desktop
  • 2523090: Some binding load twice when binder.loadAll()
  • 2555730: Unnecessary String cast on 'series' in SimpleCategoryModel
  • 2562880: Popup should be closed when click on the arrow of the sort

Upgrade Notes

  • The default setting disables the feature of ignoring the consecutive click events if it happens too close to the previous one (within 390 milliseconds). This feature is used to prevent the denial-of-service attack and the user's clicking twice before a long operation returns. However, it causes some confusion for the unit test (if the click rate is too high), so it is disabled by default. To enable it, specify the following in zk.xml.
    <client-config>
         <click-filter-delay>390</click-filter-delay>
    </client-config>