ZK 3.6.0

Released on March 2, 2009.

Download Now

Getting Simpler and Richer

New Feature Highlight

  • Listbox supports auto-soring on fields.
  • Applet Component allows you to embed Java Applet.
  • Debug mode for testing is provided.
  • CSS and images are simplified and optimized for better performance.
  • New Features

Feature Updates

  • 123 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.

What's New

  • New Features:
    • 2173627: A way to specify where to gen ZK tags in JSP (incl zul)
    • 2276253: Allow Tab key in textbox
    • 2285243: SelectEvent getKeys()
    • 2314655: Apply composers on custom components
    • 2433264: Able to access the URI of the error page
    • 2437121: Make DHtmlLayoutServlet as optional
    • 2448278: Chart could provide default model
    • 2493161: A way to instantiate a macro programmingly w/o macro declaration
    • 2495058: A way to use the same desktop UUID after reboot
    • 2512695: Able to change UiFactory, IdGenerator.. in WebAppInit
    • 2494920: Enhance auto sorting to sort on fieldnames
    • 2512555: Converter convert date to String with annotated format
    • 2530133: Column support default comparator like listheader
    • 2559476: A way to turn off the filtering of clicks
    • 1733461: throw new WrongValuesException(WrongValueException[])
    • 1874325: Listbox add a setSelectedItems(Set)
    • 2041682: Add 'separator' to menubar and toolbar
    • 2062056: Max Upload Size for FileUpload
    • 2025262: A way to close a group of ErrorBoxes
    • 2100105: Applet zul Component
    • 2495414: Config to disable shadow for Window
    • 2362560: Extend "use" to accept Object like "apply"
    • 2295541: Listhead/listheader/column/columns support set/getValue method
    • 2191823: Localize loading message
    • 2614052: Interface for Scopes
    • 2313219: Support GenericForwardComposer in groovy
    • 2016068: provide ability to load zk.xml from classpath
    • 2619208: A way to specify the charset to load i3-label*.properties
  • Bug fixes:
    • 2154845: tab switch in Java - setImage makes layout go crazy
    • 2526699: Tabpanel display issue in IE7
    • 2090136: IE6 only - Horizontal tabbox borderline disjoined.
    • 2386650: NullPointerException when create tabs in onTimer()
    • 2432784: Tabbox error in IE7
    • 2436434: Tabbox scroll to much in IE 7
    • 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
    • 2488792: SetOpen in Group and Listgroup are failure
    • 2487562: Keyboard problem in textbox inside a listbox (Firefox 3.0.5)
    • 2463857: Popup window positioning problem and wierd behaviour!
    • 2465826: Listbox.focus() does not work on Firefox
    • 2493245: zscript failed badly if macro's setMacroURI before setParent
    • 2522437: Error display after invalidate desktop
    • 2523090: Some binding load twice when binder.loadAll()
    • 2525344: Exception when changing page's ID in Initiator
    • 2555730: Unnecessary String cast on 'series' in SimpleCategoryModel
    • 2562880: Popup should be closed when click on the arrow of the sort
    • 2580627: extendlet-check-period has no effect to DspExtendlet
    • 2583507: Executions.createComponents not work in server push
    • 2587158: <??page> failed to recognize single quote
    • 2603453: Wrong dependency in zcommon-3.5.2.pom
    • 2614854: Strange Menu Icon when font set to Large
    • 2585234: Add 'mold=paging" to Grid Grouping causes display problems
    • 2568653: bug PortalMoveEvent miss the droppedindex
    • 2580752: Listbox with paging and multiple, returns the wrong selected
    • 2539896: Checkmark in header of listbox has no effect (Opera only)
    • 2515562: the DOM tree parent of calendar in datebox is not datebox
    • 2492748: onClientInfo still firing after session invalidates
    • 2448909: Path.getComponent throws ComponentNotFoundException
    • 2519885: Paginated tree with multiple selection checkmark
    • 2564298: Clear a Datebox with constraint
    • 2630168: DataBinder.fetchValue throws unnecessary exception for map
    • 2614901: Menu with key down/up fail in IE
    • 2219660: Menus don't work over HTML component if PDF inside
    • 2635417: Slider scale mold no effect when mouse hover on the icon

Upgrade Notes

  • getMoldSclass is deprecated and replaced with getZclass since we are going to provide ZK Cascading Classes that allow developers to configure the CSS with the component name.