ZK 8.0.2 Release Notes

PE/EE Released on May 24, 2016


ZK 8.0.2 is a maintenance release for ZK 8. ZK 8 is aimed to provide a more powerful solution that combines the strengths of both client and server sides. New features like enhancement in MVVM, new form binding approaches, and many more make the interaction between the two sides much more easier!

ZK 8 enables developers to effortlessly integrate with any 3rd party Javascript libraries. Leveraging ZK 8, design and development teams will have a much easier job and spend less time creating applications which look great and perform better than ever.

Please note that this version is released for PE/EE customers & ZOL users.



New Feature Highlight

  • ZK-3100: Support a way to customize classloading
  • ZK-3133: Support a Match Media annotation for MVVM to use
  • ZK-3185: Enable form validation with reference and collection binding
  • ZK-3188: Implement configurable ajax-timeout/retry/retry-delay for Comet serverpush

What's New

  • New Features
    • ZK-2582: Allow specification of Priority for SelectorComposer's @Listen() Annotation
    • ZK-3086: Users can customize file size exceeding message for Dropupload
    • ZK-3098: Add onItemClick event to Chosenbox
    • ZK-3100: Support a way to customize classloading
    • ZK-3105: Users can specify uploading target path
    • ZK-3132: Make AuUploader and AuDropUploader can be extended and overridden
    • ZK-3133: Support a Match Media annotation for MVVM to use
    • ZK-3134: Provide configurable defaults to be be ignored in form proxies
    • ZK-3142: Apply, updated Russian i18n
    • ZK-3157: Library property support "name" - "values"
    • ZK-3161: Title / caption / icon for collapsed LayoutRegion in BorderLayout
    • ZK-3166: BorderLayout slide action server-side support
    • ZK-3185: Enable form validation with reference and collection binding
    • ZK-3188: Implement configurable ajax-timeout/retry/retry-delay for Comet serverpush
    • ZK-3206: Support metaKey for MouseEvent
  • Bugs Fixed
    • ZK-3068: A toolbar with a toolbarbutton does not count as a focusable control when giving focus to the first element of a modal window
    • ZK-3069: tabindex=0 is not passed to the widgets associated dom element
    • ZK-3073: [JBoss Wildfly] Unknown listener: class org.zkoss.zuti.bind.ZutiPhaseListener
    • ZK-3082: Chosenbox onSearching does not fire with an empty value
    • ZK-3083: NPE at VisibilityChangeEvent
    • ZK-3084: An EL in a command binding cannot access "event" object
    • ZK-3094: Scrollable menubar body is not properly resized after container resizing.
    • ZK-3095: Menubar ignore menuitem margin when calculating scrollable status.
    • ZK-3097: Serialization issue: org.zkoss.zhtml.impl.AbstractTag$EncodedURL is not serializeable
    • ZK-3099: error message positioning when using ca:data-scrollable
    • ZK-3102: Combopopup wrong position
    • ZK-3103: listbox setSelectedIndex does not scroll selected item into view
    • ZK-3104: jsonBindingParam-converter interfering with "normal" @BindingParams
    • ZK-3106: template injection doesn't work with the nested template
    • ZK-3107: error when using @DependsOn
    • ZK-3110: CollectionTemplate is hiding outer template
    • ZK-3111: Message code not found in msgzul
    • ZK-3113: setting int property causes NPE
    • ZK-3114: Chosenbox should clean selections after set new model
    • ZK-3115: macro components adding inline-styles
    • ZK-3117: Selection bug on listbox using checkmarkDeselectOthers functionality
    • ZK-3118: processing mask cause a js missing error exception when target component is not rendered.
    • ZK-3120: IE 8 switches to compatibility mode on popup open
    • ZK-3123: File not found when loading external resource in a jar file
    • ZK-3131: protocol relative URL erroneously prefixed with current context path
    • ZK-3136: Textbox binding * fails
    • ZK-3137: an icon in a menupopup is not well aligned horizontally
    • ZK-3139: maximizable and minimizable buttons in panel have the same tooltip
    • ZK-3140: Textbox text selection in draggable row unavailable in Firefox
    • ZK-3143: Mesh element with multiple selection text content gets selected when using ctrl click or shift click on IE11
    • ZK-3145: Chosenbox focus() does not give focus to the input field
    • ZK-3146: file upload error when detaching parent component
    • ZK-3147: The margin should not increase a component's width with hflex="min"
    • ZK-3149: FormBinding on Hibernate Entity causes: RTE: "duplicate method: setHandler"
    • ZK-3152: Listbox can render changed items only when ROD is enabled
    • ZK-3154: autopaging will activate paging mold on first load if the content is just fit for default mold
    • ZK-3158: Shadow Element NPE when setting on a parent outside of a page
    • ZK-3165: draggable treeitems fire onSelect too early in IE
    • ZK-3167: A Textbox's onChange doesn't fire when it's inside a draggable Row
    • ZK-3168: Chosenbox doesn't send onSelectSubModel direcly to the server using ListSubModel
    • ZK-3169: Invalidate on a parent of chosenbox causes selection to disappear using listsubmodel
    • ZK-3170: Opened treeitem set disabled while not visible causes child treeitems to be removed from the DOM tree
    • ZK-3173: listmodel.clear() does not reset listmodel.getActivePage()
    • ZK-3175: JS error on text selection after d&d
    • ZK-3182: The label key is resolved differently in a <template> between the one inside a Grid and outside
    • ZK-3184: ScrollIntoView does not apply recursively
    • ZK-3193: bandbox unexpected onChanging event in FF
    • ZK-3195: Firefox Drag n Drop doesn't give "droppable" status after bugfix 3140
    • ZK-3196: form binding: doesn't save property when it's a proxy object
    • ZK-3202: Spinner custom constraint error message broken
    • ZK-3207: Clients.resize() keeps increasing a component's height with vflex="min"
    • ZK-3208: Using a custom paging with a mesh component in MVVM cause ListModelList pageSize to be reset
    • ZK-3210: Spinner custom constraint error message partially wrong
  • Upgrade Notes
    • Remove the method getOptionId(Object) in Chosenbox.java
    • Moved all getter and setter of tabindex to root component HtmlBasedComponent.java to match the spec of html5
    • Remove FormProxyObjectChangeListener.java and addFormProxyObjectListener(FormProxyObjectListener) in FormProxyObject.java

Key Features

  • 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, CKeditor, and Timeline 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.