ZK 8.0.1 Release Notes

Released on Jan. 19, 2016


ZK 8.0.1 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.



New Feature Highlight

  • ZK-2677: Provide a way to customize style and icon of Errorbox
  • ZK-2817: Support combination of Ctrl, Alt and Shift for setCtrlKeys API
  • ZK-2902: make INVALIDATE_THRESHOLD configurable
  • ZK-2931: Atlantic theme @import google fonts

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, 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.

What's New

  • New Features
    • ZK-1993: Get to the component of validation message from code
    • ZK-2535: Accessibility support for panel/window buttons
    • ZK-2642: Check if included html file will produce duplicated html, head and body tag
    • ZK-2677: Provide a way to customize style and icon of Errorbox
    • ZK-2817: Support combination of Ctrl, Alt and Shift for setCtrlKeys API
    • ZK-2902: make INVALIDATE_THRESHOLD configurable
    • ZK-2931: Atlantic theme @import google fonts
    • ZK-2944: Support Shadow element selector
    • ZK-2950: Support a way to persist the Shadow element
    • ZK-2951: Support a way to trigger MVVM command silently
    • ZK-2953: Support a way to get the invalid value from ValidationMessages with the given key
    • ZK-2959: Support customized class for getting content-type
    • ZK-2993: add an option to enable deferrable/lazy @save() bindings
    • ZK-3039: defining a template "component" in lang-addon.xml
    • ZK-3041: Creatable chosenbox should be able to create new tag when typing subword of existing options
  • Bugs Fixed
    • ZK-1590: Doesn't listen to w:onShow
    • ZK-2329: NPE at org.zkoss.zk.au.http.AuUploader.service(AuUploader.java:115)
    • ZK-2461: Odd layout when adding columns dynamically
    • ZK-2742: Combobox popup shows at wrong position in IE10
    • ZK-2787: 8.0.0-RC1 breaks ZkToDo2 demo with ZK error "cannot create proxy java.sql.Timestamp empty constructor needed"
    • ZK-2808: constructor call causes NPE in ZK bind expression
    • ZK-2809: missing error message for zul import directive
    • ZK-2840: Cannot scroll down a Grid with a mobile browser
    • ZK-2841: Unselecting a Navitem form Java does update the UI
    • ZK-2849: Cannot close the dropdown by clicking combobox button
    • ZK-2858: content type list is not complete in the contentType.properties file
    • ZK-2859: setting an ID on treeItem cause duplication issue with paging mold
    • ZK-2860: grid row doesn't stripe the grid when .setVisible(false)
    • ZK-2862: Cannot select an item in a listbox when its outer listbox is draggable
    • ZK-2866: auxiliary headers will disapear when using <frozen/>
    • ZK-2872: Dropupload dropzone doesn't disappear after incomplete action on IE 11
    • ZK-2874: onBookmarkChange isn't triggered on sendRedirect with 7.0.6.1
    • ZK-2879: The "rows" attribute of Frozen doesn't work
    • ZK-2885: chosenbox create message escaping
    • ZK-2887: datebox calendar control mostly hidden on ipad
    • ZK-2888: support chrome on ios
    • ZK-2890: Ghost and Drag Message from Tree / Treeitem
    • ZK-2891: Hflex/Vflex cause modal windows to be vertically centered
    • ZK-2892: Modal window are not centered if content is resized by hflex
    • ZK-2893: small typo in error message in ConfigParser
    • ZK-2895: hflex cause slider without width to throw "Not allowed to set hflex and width" exception
    • ZK-2899: Listbox's select mold issue on Firefox
    • ZK-2901: getBoundingClientRect() is slow in ie
    • ZK-2906: Escaped characters are not parsed back in ChosenBox > CreateMessage
    • ZK-2907: There is no element defined for <captcha> in zul.xsd
    • ZK-2908: ZK8 hflex/vflex not working in Captcha
    • ZK-2911: Fail to assign a variable declared in zscript to a custom attribute in the page scope
    • ZK-2912: Specifying a non-existing variable in "unless" attribute causes a NullPointerException
    • ZK-2913: Specifying a non-existing variable in "test" attribute of <if> causes a NullPointerException
    • ZK-2915: collection template side effect
    • ZK-2917: MVVM relocating components with ViewModels
    • ZK-2918: SelectAll checkbox only unselect the currently rendered items in Listbox
    • ZK-2919: WrongValueException prevents combobox from saving value
    • ZK-2920: Chosenbox in popup loose value in IE 10
    • ZK-2921: Loading a null variable in a load binding throws a NullPointerException
    • ZK-2922: Cannot close an error box after multiple error boxes created in firefox
    • ZK-2923: side effects when calling notify change on a null value
    • ZK-2925: childrenbinding exception on clear()
    • ZK-2927: Children binding add and reload model
    • ZK-2928: Clear user input doesn't sent a onChange and onSelect
    • ZK-2930: Setting a model to a Chosenbox causes a NullPointerException
    • ZK-2934: A control in a grid row does not count as a focusable control when giving focus to the first element of a modal window
    • ZK-2935: A modal window with no focusable control will give focus to background element on tab focus.
    • ZK-2936: NotSerializableException: org.zkoss.io.RepeatableInputStream$ResetableInputStream
    • ZK-2937: The Combobox overwrites input text with previously selected item
    • ZK-2938: Mutual blocking setHeight-setVflex and setWidth-setHflex is not satisfactory.
    • ZK-2939: visible="false" listitems in listbox shift index of visible elements
    • ZK-2940: Combobutton is not tab focusable if no tabIndex or tabindex="0"
    • ZK-2941: Combobutton has not keyboard behavior
    • ZK-2943: The root template should be added to page scope
    • ZK-2946: tree column align ignored
    • ZK-2948: Do listen "OnBind" again in Data handler when a widget trigger rerender()
    • ZK-2957: data-handler feature doesn't work with zhtml.Widget's
    • ZK-2958: Error "Removal causes a larger list?" on Combobox
    • ZK-2964: datebox format for time notation bug
    • ZK-2968: listbox rows-attribute ignored on ipad
    • ZK-2969: onSelect / onCheckSelectAll events not consistent (paging)
    • ZK-2970: input fields losing focus in listbox
    • ZK-2971: listbox scrollposition not updating (keyboard control)
    • ZK-2974: Constraint error box's tooltip is confusing in German
    • ZK-2977: A combobox popup displays at an unexpected position
    • ZK-2978: Borderlayout doesn't appear a vertical scrollbar when its content overflows
    • ZK-2979: OSGi: Split Packages of javassist.util.proxy
    • ZK-2980: button not focussable after it was autodisabled
    • ZK-2982: apply shadowElement problems with serialization
    • ZK-2983: "Invalidate" corrupts the selection displayed in chosenbox
    • ZK-2984: inconsistent contains()/remove() behavior
    • ZK-2987: Going to the last page causes an empty-like listbox
    • ZK-2988: column with hflex min causes JS error in grid with footer
    • ZK-2990: zk.useStackup: problem with notifications and z-index
    • ZK-2991: <data-handler> doesn't accept <script>inline script</script>
    • ZK-2992: Using ZK PE - Grid does not scroll and scrollbar breaks in iPad
    • ZK-2994: Removal causes a larger list in nested children binding
    • ZK-2995: NamespaceParser should work with non-ZK namespace
    • ZK-2996: datebox unknown constraint when debug-js is enabled
    • ZK-2999: Calling tree.selectAll() doesn't select all items on a browser
    • ZK-3000: ListSubModel doesn't support selection from model in chosenbox
    • ZK-3006: If the separator key needs to press the shift key, it doesn't work as expected
    • ZK-3007: grid master detail columns not aligned
    • ZK-3008: combopopup overlapping inputfield
    • ZK-3009: infinite loop with recursive apply-template
    • ZK-3010: chosenbox with listsubmodel does not fire onSearchEvent
    • ZK-3011: zhtml img src ignored before added to page
    • ZK-3013: unexpected events on Combobox with Grid+RowRenderer
    • ZK-3014: Bandpopup content Listbox with hflex="min" get a 1px width if Listbox is updated while popup is not visible
    • ZK-3015: Combobox model setSelection does not update the textbox
    • ZK-3016: scrollable tabs problems with dynamic tab labels
    • ZK-3017: problems with complex regex
    • ZK-3020: NotSerializableException: java.util.logging.Logger is caused by TrackerImpl
    • ZK-3021: lost variable in nested children-binding
    • ZK-3022: NPE when expand all node of Tree by set isOpen = true for all TreeItem
    • ZK-3023: Bandpopup and bandpopup-shadow width cause overlapping / unwanted scrollbar
    • ZK-3026: ChildrenBinding breaks when adding an element not to the end of the ListModelList
    • ZK-3040: icon disappears in IE8 on mouse hover
    • ZK-3042: Theme demo source out of sync with theme demo from official site
    • ZK-3044: ZK 8 popup/context/tooltip binding via EL/ZK-Bind
    • ZK-3045: Memory leak in MVVM binding
    • ZK-3046: childrenBinding - conditional item rendering
    • ZK-3048: Listheaders are mis-aligned with listcells under non-nativebar
    • ZK-3049: Combobox drop-down button behavior with inplace="true"
    • ZK-3051: Combobox drop-down menu cover the input textbox
    • ZK-3053: the ZK processing bar is shown unexpectedly
    • ZK-3059: hflex="min" doesn't consider child components' margin
    • ZK-3062: vflex="min" doesn't consider a component's margin
    • ZK-3066: custom resolvers doesn't work while BindELResolver has outcommented DynamicPropertiedELResolver
    • ZK-3077: Focus class is not removed on listitem on unselection when draggable is active
    • ZK-3089: Upload dialogue open again after click 'cancel'
  • Upgrade Notes
    • Rename the method of ListModelArray, ListModelList, and ListModelSet from update(E) to notifyChange(E).