ZK 8.0.0 RC release notes

Released on May 26, 2015


ZK 8's main focus is on providing developers even more powerful tools allowing faster and more accurate development of Java Web Applications. We are proud to announce extensive improvement to EL, now supporting EL3, major MVVM enhancements and many more changes.


Getting Simpler and Richer

Behind the scenes

  • To read about the philosophy behind ZK 8, please visit this blog

Feature Updates

  • 120+ off-the-shelf Ajax 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 and CKeditor components.
  • Event-driven, server-centric model
    • Ajax requests, application notification, and server push are all managed as events
    • Event Queue shields developers from the complexity of Ajax and server push, such as multi-thread programming
    • 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 access 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.
    • POJO components supporting interfaces and clustering. Easy to instantiate and manipulate directly with pure Java, or injected and managed by an AOP framework, such as Spring
    • Macro components. Develope full-featured new component by using other 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 Tracker
    • ZK-1717: Support dymic template
    • ZK-1972: ZK bind support access vm properties in client side
    • ZK-1983: add a "today" button to datebox's calendar popup
    • ZK-2476: Support to plug a different parser for parsing a page
    • ZK-2508: Enhance ForEachStatus to be consistent with JSTL's varStatus properties.
    • ZK-2545: Children binding support ListModel
    • ZK-2576: Support a shadow element concept for Databinding or EL expression
    • ZK-2578: Add one more phase when initial bindings
    • ZK-2581: Add a @SmartNotifyChange annotation that triggering the notification once the value of the property is changed
    • ZK-2584: Support @command and @global-command for client side to use
    • ZK-2591: zk.loadScript() can check file existence
    • ZK-2596: Support JSR 341: Expression Language 3.0
    • ZK-2612: ZHTML support textContent attribute for dynamic data binding
    • ZK-2613: ZHTML component's src attribute support encodeURL like Image in Zul
    • ZK-2614: ZK DataBinding support client callback function after some command triggered
    • ZK-2620: Upgrade Font Awesome to 4.3 version
    • ZK-2631: Parser support another namespace for shadow element
    • ZK-2632: Parser support disorder template tag
    • ZK-2638: simplify exception handling (avoid wrapping RuntimeExceptions)
    • ZK-2641: Support custom error message for input element that has multiple constraints
    • ZK-2650: BindingParam annotation support converting from JSON to POJO automatically
    • ZK-2660: Sync grid column visible state in client/server side when show/hide column through menupopup
    • ZK-2668: New Build-in Converter - FormattedTimeConverter
    • ZK-2674: Add an annotation for notify command
    • ZK-2675: Add an annotation for client command
    • ZK-2698: Add a lightweight rich editor
    • ZK-2707: Add a timepicker component
    • ZK-2708: Add a rowlayout component
    • ZK-2713: Clients.java support loadScript and loadCSS API
    • ZK-2718: Forbidden to set hflex/vflex and width/height at the same time
    • ZK-2724: Add a callback mechanism for component at redraw phase
    • ZK-2725: New ZK message support - Danish translation
    • ZK-2727: Utilize Scrollview component in desktop
    • ZK-2730: Support client data attributes handler
    • ZK-2753: el3 enhancement for invoking customized static method
  • Bugs fixed
    • ZK-1848: Form Binding doesn't update the bean field when a binding bean changed
    • ZK-2078: FormBinding with collections does not cache the changes
    • ZK-2083: MVVM Form Binding with References
    • ZK-2552: Tabbox model NotifyChange problem
    • ZK-2592: @validator('formBeanValidator'... does not validate nested properties
    • ZK-2598: forward event behaves inconsistent inside an include
    • ZK-2663: Popup does not show up when its parent is native
    • ZK-2716: xhtml component dynamic updates
    • ZK-2721: sh:apply parameters leaking into templates
    • ZK-2726: Bean proxy object cannot accept a null value
    • ZK-2735: Form proxy with enum property
    • ZK-2736: Form proxy with Immutable values
    • ZK-2737: Form proxy with calculated (transient) fields
    • ZK-2738: Break line merge problem in zul file
    • ZK-2744: pause comet server push while au isn't ready
    • ZK-2762: zk:zscript tag directly inside html or head tag no longer works

Upgrade Notes

  • Deprecated the method of getEach() in org.zkoss.zk.ui.util.ForEachStatus, use getCurrent() method instead.
  • Removed the class of org.zkoss.bind.SimpleForm, org.zkoss.bind.impl.FormImpl and org.zkoss.bind.impl.FormExt.
  • Renaming icons for upgrading Font Awesome to 4.3
    • z-icon-move to z-icon-arrows
    • z-icon-resize-full to z-icon-expand
    • z-icon-resize-small to z-icon-compress
    • z-icon-resize-vertical to z-icon-arrows-v
    • z-icon-resize-horizontal to z-icon-arrows-h
    • z-icon-fullscreen to z-icon-arrows-alt
    • z-icon-hospital to z-icon-hospital-o
    • z-icon-unlock-o to z-icon-unlock-alt
    • z-icon-ellipsis-horizontal to z-icon-ellipsis-h
    • z-icon-ellipsis-vertical to z-icon-ellipsis-v
  • Removed the icons for upgrading Font Awesome to 4.3
    • z-icon-expand-o
    • z-icon-collapse-o
  • The library property of org.zkoss.zk.ui.invokeFirstRootForAfterKeyDown.enabled is false by default.
  • Deprecated the method of setWidgetAttribute() and getWidgetAttribute() of org.zkoss.zk.ui.Component, use setClientAttribute() and getClientAttribute() method instead.