ZK 2.4.1

Released on July 6, 2007.

Download Now

Getting Simpler and Richer

New Feature Highlight

  • The transmission time over the slow Internet connection is improved dramatically due to the use of the gzip compression and the removal of unused codes from prototype and script.aculo.us.
  • Tree controls can now display items in multiple pages. It improves the performance of huge trees dramatically.
  • An option not to disable HTML tags behind the modal window. It is designed to speed up the opening of a modal window on a sophisticated page.
  • The generation of UUID of components, pages and desktops is customizable. It is designed to work with the record-and-replay testing tools.
  • See also New Features of ZK 2.4.1.

Feature Updates

  • 77 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:
    • 1735610: Translate messages to Catalan. Thank Xavier Covas O'Ryan ([email protected]) for his contribution.
    • 1744123: Improve the way the performance of handling a huge tree
    • 1746896: Support gzip to send back JS, CSS and AU responses
    • 1747429: Interpret .ZUL loaded from classpath
    • 1740668: A way to override the generation of IDs of comp/page/desktop
    • 1736861: should be device dependant (ZK Mobile)
    • 1738246: Improve multiline textbox with maxlength
    • 1738280: An option not to disable elements behind a modal window
    • 1740080: Datebox supports the buttonVisible property
    • 1740072: dynamic "look ahead" live data for listbox and grid
    • 1743271: Generic way to handle ThreadLocal variables issue
    • 1743288: Make button icon of comobox/bandbox configurable
    • 1744550: Interpreter support namespace-based method retrieval
    • 1736887: Unnecessary .js files and reducing zk pages loading time
  • Bug fixes:
    • 1734801: toolbarbutton/button popup broken in 2.4.0
    • 1721809: button.onClick does not always work
    • 1741959: Potential IE memory leaks for not unregister event listener
    • 1734950: listbox seletion update-problem
    • 1736355: zkplus didn't import databind pkg for groovy, ruby...
    • 1736858: Memory Leak with BeanShell
    • 1687152: Windows are overlaying background images
    • 1737604: EL: session is not accessible
    • 1738240: Combobox's onselection doesn't work
    • 1738343: Unable to include ZUML page from JSP
    • 1738368: zkFilter failed to work with Jetty 6.1.4
    • 1711822: Menuitem: the order of onClick and onOpen
    • 1713353: SPRING SCOPE SESSION BUG
    • 1738241: Combobox's icon is placed at the wrong location (IE only)
    • 1746913: Grid in listbox cause ClassCastException if clicking on grid
    • 1746915: Grid in listbox: wrong text color if selected
    • 1735084: listbox styles cascade into datebox-popup (IE only)
    • 1737660: Listbox/Gridbox header cell size render error
    • 1744427: Error binding Listbox
    • 1748680: JavaScript namespaces hardcoded in component classes

Upgrade Notes

  • The ZK loader and filter compress the output if the browser supports the compression encoding. It may cause some side effect if you post-process the output with a filter. You can turn it off to make the ZK loader not to compress as used to. Refer to the Developer's Guide for details.
    <servlet>
      <servlet-name>zkLoader</servlet-name>
      <servlet-class>org.zkoss.zk.ui.http.DHtmllayoutServlet</servlet-class>
      <init-param>
        <param-name>compress</param-name>
        <param-value>false</param-value>
      </init-param>
      ...