ZK 9.6.0 release notes

Released on Aug. 10, 2021


ZK Team is proud to announce the release of ZK 9.6. ZK 9.6 comes with two packages, supporting you to either stay with Java EE or migrate to Jakarta EE.

In addition, with improved ZK Embedded, incorporating ZK components, modules and applications into an external framework such as AngularJS and Python has become easier than ever.

Last but not least, with your real-world feedback, we were able to finalize the web accessibility support and are thrilled to see WCAG-compatible ZK applications reaching out to the unreached.

For more information read ZK 9.6 New Features.



What's New

  • New Features
    • ZK-1209 - Proxying ViewModel breaks binder annotations
    • ZK-2299 - Frozen column support on tablet device
    • ZK-4273 - Colorbox add keyboard support for cancelling
    • ZK-4330 - provide select-all checkbox in tree component
    • ZK-4524 - blocking all user keyboard input during processing message showing
    • ZK-4595 - support a way to re-sort a ListModel under MVVM pattern
    • ZK-4631 - Add option to choose toolbar overflow icon
    • ZK-4672 - borderlayout keyboard resizing movement speed
    • ZK-4674 - Atlantic: always use HTTPS scheme for fonts.googleapis.com
    • ZK-4745 - Datebox supports to display with custom calendar system (e.g. Minguo) year
    • ZK-4751 - provide a built-in cryptographically random (desktop) id generator
    • ZK-4752 - evaluate nonce based per request tokens to prevent replay attacks
    • ZK-4761 - MVVM provides an option to disable viewmodel annotation caches
    • ZK-4771 - Provide a way to add theme-uri without extends any existing ThemeProvider
    • ZK-4777 - signature can have a background image
    • ZK-4779 - audio supports to fire an event upon its playing state
    • ZK-4783 - Modify error message box CSS design (provide scrollbar while word-break fail)
    • ZK-4795 - Grid/Listbox/Tree supports sticky column headers
    • ZK-4797 - Supporting Jakarta EE namespace
    • ZK-4810 - Radiogroup should offer setDisabled(..)/isDisabled(..), esp. when used with model & renderer
    • ZK-4836 - tree - avoid scroll timeout/delay to improve user experience
    • ZK-4838 - searchbox and cascader support onFocus and onBlur
    • ZK-4844 - Replace spacer.gif by a base64 encoded string
    • ZK-4863 - constraint supports user-defined flags
    • ZK-4864 - Add datebox attribute to enable or disable close on timeZone change
    • ZK-4866 - Allow focussing arbitrary components/elements
    • ZK-4874 - navitem supports badgeText
    • ZK-4875 - Implement media onEnded event
    • ZK-4894 - A popup can move upon scrolling inside any element
    • ZK-4914 - Add toggleable debug / error trace for Clients EvalJavascript
    • ZK-4917 - set zoom level with fit-page-width or fit-page-height in Java
    • ZK-4918 - support a configuration to disable touch behavior
    • ZK-4925 - zEmbedded support for zul-declared stylesheet and script components
    • ZK-4926 - zEmbedded support for images
    • ZK-4934 - ListModelList (Map/Set/Array) supports Form binding
    • ZK-4938 - Textbox can fire an onChanging event when users enter a predictive text on iPhone
    • ZK-4943 - Provide a before destroy callback / event when replacing an embedded instance for cleanup
    • ZK-4950 - Improve accessibility of the buttons in a caption

  • Bugs fixed
    • ZK-3563 - Children binding causes load binding to stop firing
    • ZK-3770 - source map produces a wrong line number
    • ZK-4276 - Tbeditor content is not updated
    • ZK-4282 - SimpleGroupsModel selection synchronizing is working only in multiple mode
    • ZK-4283 - The sort icon direction is not synchronized in model
    • ZK-4387 - The popup of Chosenbox not updated after ZK-3986
    • ZK-4432 - Server error if the message in an AU request was too large
    • ZK-4496 - The result of a native HTML5 template tag is missing
    • ZK-4525 - A tooltip makes toggle type Popups closed
    • ZK-4535 - Combobutton toolbar mold has a border
    • ZK-4543 - Calendar should respect the constraint while Month changing
    • ZK-4555 - remove zkbind-api -> zul dependency
    • ZK-4597 - Disabled Combobutton should not be able to focus or controlled by keyboard
    • ZK-4636 - Slider curpos might be larger then maxpos while dragging
    • ZK-4700 - chosenbox inplace influence other chosenbox
    • ZK-4701 - chosenbox initial width too short to display emptyMessage
    • ZK-4707 - 2nd popup open by click menu item on 1st popup will close immediiate (on fast bandwidth)
    • ZK-4728 - Treeitem with visible="false" is not rendered, cause null on treeItem.$n() when toggling parent open status
    • ZK-4730 - While dragging a scroll thumb, a tree doesn't render treerows in time
    • ZK-4748 - Bandpopup should close while bandbox lost focus with TAB key
    • ZK-4762 - listbox with frozen columns cannot show all headers under non-100% zoom level(non-smooth)
    • ZK-4763 - Radiogroup selectedIndex error after radio moved
    • ZK-4778 - Memory Leak: DesktopEventQueue$ListenerInfo
    • ZK-4780 - Decimalbox has no value in Germany-locale in mobile
    • ZK-4781 - No error message appreared in invalid Longbox in mobile
    • ZK-4782 - vflex on goldenpanel doesn't work as expected
    • ZK-4784 - detached Radio(Group) memory leak
    • ZK-4787 - Loading combobox model from serverpush cause popup to fail to resize
    • ZK-4788 - setCols(0) causes exception for InputElement
    • ZK-4789 - The header of PerformanceMeter is missing in rmDesktop
    • ZK-4791 - VM ID map not cleared when parent of VM is detached
    • ZK-4792 - Chosenbox getSelectedIndex() return wrong index with ListModelList
    • ZK-4793 - IndexOutOfBoundsException Tree.renderItemByPath
    • ZK-4798 - setMold("paging") causes exception while checkbox is selected
    • ZK-4800 - Tree NPE when adding/removing model
    • ZK-4801 - Atlantic: adds google-font for all themes
    • ZK-4803 - tree update model performance
    • ZK-4804 - tree: incorrect scroll position, after model replace (renders incomplete)
    • ZK-4805 - org.zkoss.json.JavaScriptValue not serializable
    • ZK-4806 - borderlayout region with whitespace title
    • ZK-4808 - menu click listener ignored (unexpectedly)
    • ZK-4809 - NPE with comet server push (servlet 3) reconnect on Tomcat
    • ZK-4813 - WCAG splitter/splitlayout (collapse="after")
    • ZK-4814 - WCAG splitter/splitlayout not updating (aria-valuenow/-valuelabel) when using mouse
    • ZK-4817 - listgroup open/close triggers selection (mobile)
    • ZK-4819 - Chosenbox performance (with za11y.jar)
    • ZK-4820 - Chosenbox aria-activedescendant out of sync (za11y.jar)
    • ZK-4821 - tri-state checkmark still checks while disable when clicking in the border
    • ZK-4822 - Possible StackOverflowError in TreeModel.getSelectionControl().isSelectAll()
    • ZK-4824 - radiogroup inappropriate aria-owns (confuses screen-reader)
    • ZK-4825 - Websockets NPE during encodeURL
    • ZK-4827 - Fail to load JSP with ZK Components
    • ZK-4828 - remove externally loaded resources with internal refs.
    • ZK-4831 - parseStyle splits css string incorrectly
    • ZK-4832 - map property bindings loading inconsistently
    • ZK-4833 - CKEditor fails to initialized if added to a closed detail component
    • ZK-4834 - tree scroll pos + latency errors
    • ZK-4835 - Browsers supporting both touch and mouse fails to register mouse events following ZK-4301
    • ZK-4837 - Searchbox doesn't render items for a ListModelList change in an onOpen listener
    • ZK-4839 - za11y: hover navitem without children (JS Error)
    • ZK-4840 - navbar navitem icon/text alignment
    • ZK-4842 - Comet NPE during encodeURL (Jetty)
    • ZK-4843 - combobox checkPopupPosition performance
    • ZK-4845 - notified @load binding not updating inside shadow element
    • ZK-4846 - Select all checkbox ignores click (tree/listbox)
    • ZK-4848 - Sorting failed message is not clear when using ListModelMap in Listbox/Grid
    • ZK-4850 - Autopaging row height calculation incorrect by 1px
    • ZK-4851 - Datebox fails with default DateFormat from Java 11.0.2+
    • ZK-4852 - JS errors swallowed during widget class initialization
    • ZK-4853 - Treeitems removed by ROD after receiving onOpen still try to render, cause issues if accessing DOM
    • ZK-4854 - navbar opening animation needs fine tuning
    • ZK-4855 - some ListProxy methods set _dirty directly instead of calling setDirty, missing updates
    • ZK-4856 - undefined msgzk properties is used
    • ZK-4857 - Missing right click and double click in hybrid touch mouse mode
    • ZK-4858 - slider knob styles contain invalid css property
    • ZK-4859 - a specific text "$z!t#d:" makes ZK AU failed
    • ZK-4860 - zkmax/zkex project build failing under maven 3.8.1
    • ZK-4862 - open an error message box when its input component is not in viewport
    • ZK-4865 - button stealing focus
    • ZK-4867 - listbox with auxhead (hflex vs span conflict)
    • ZK-4868 - signature background color should be white while setBackgroundColor(null)
    • ZK-4869 - borderlayout keeps resizing
    • ZK-4870 - borderlayout region caption misaligned
    • ZK-4872 - Listbox selects a wrong item with listgroup
    • ZK-4873 - Theme build process fails in windows due to escaping
    • ZK-4876 - Column layout causes white-space no-wrap on every descendant
    • ZK-4877 - ZKBind still use illegal reflective access which is not allowed anymore with JDK 16
    • ZK-4879 - navbar jumping focus
    • ZK-4880 - zjq.clearStyles performance
    • ZK-4883 - Clients.submitForm does not submit form
    • ZK-4884 - Menuitem addActive adds hover style to ancestor menu, doesn't clean it
    • ZK-4888 - listheader width shrinks to minimal size unexpectedly after reloading a model
    • ZK-4889 - @Default not working correctly with simplified command
    • ZK-4890 - EE ROD on listbox override scrollToIndex
    • ZK-4891 - @AutoNotifyChange simply ignores annotations on a setter method
    • ZK-4892 - Binding annotation @Immutable not working properly
    • ZK-4893 - The last item of ForEachStatus.last is false if end can't be reached by step
    • ZK-4896 - A misleading error message in <when>
    • ZK-4897 - <forEach> doesn't support a primitive array
    • ZK-4898 - za11y navigation in listbox/tree intercept events in input-based components, cause lost focus
    • ZK-4902 - cannot call formatNumber(Object number, String pattern, Locale locale)
    • ZK-4903 - Goldenlayout sets incorect vflex following ZK-4776
    • ZK-4905 - ListModelList clear cause listbox to not add new listitems
    • ZK-4906 - menubar autodrop=true closing when still hovering other menu items
    • ZK-4908 - Navbar autoclose not working if the navitem is already selected
    • ZK-4909 - navbar popup not closing popup when switching to collapsed false
    • ZK-4910 - tree jumping up back when scrolling down on touch devices
    • ZK-4912 - listbox sends onClick event for listitem with mold="select" in firefox
    • ZK-4915 - The badgeText misaligned in Nav
    • ZK-4916 - tbeditor setValue only sets source, doesn't affect display without rerender
    • ZK-4919 - Can't establish a WebSocket connection in Jetty 11
    • ZK-4920 - listbox (autopaging) listitem height incorrect between iceblue/iceblue_c
    • ZK-4921 - listbox with a SimpleGroupsModel doesn't fire an expected onSelect event
    • ZK-4922 - zEmbedded upload fails
    • ZK-4923 - zEmbedded download fails
    • ZK-4929 - keyboardevent with keyCode 0 (invalid key) closes popups
    • ZK-4930 - Can't establish a WebSocket connection in Tomcat 10
    • ZK-4932 - Datebox with constraint sending unnecessary onChange Event
    • ZK-4933 - Video using RepeatableInputStream loads very long, Byte[] is instant
    • ZK-4935 - Support 2GB+ file uploads
    • ZK-4937 - incorrect content-type response header of a request to fontawesome-webfont.eot
    • ZK-4939 - zk built-in icons have inconsistent size by default
    • ZK-4944 - zEmbedded doesn't clean client-side object and references on destroy
    • ZK-4945 - FormIdCache in AnnotateBinderEx causing memory leak with shadow elements
    • ZK-4948 - URL forwarding/redirection in zEmbedded
    • ZK-4949 - zjq undoVparent may cause error if detached / missing element
    • ZK-4953 - zEmbedded unable to load <include> correctly in defer mode
    • ZK-4977 - Triggering @MatchMedia by immediate resizing is not working in Desktop since Chrome 92
    • ZK-4979 - The onRightClick event was triggered on a disabled Button since Chrome 92

  • Upgrade Notes
    • The default desktop ID generator was replaced by a more secured one. If you prefer to use the previous generator, use org.zkoss.zk.ui.impl.LegacyDesktopIdGenerator.
    • Due to ZK-4783, the hbox of message box is substituted by DIV.
    • Deprecated the method of isEditionValid() and encodeWithZK() of org.zkoss.zk.fn.ZkFns and core.dsp.tld.
    • Datebox format with a single y pattern letter will not be truncated to 2 digits year according to the Unicode specification.
    • For Jakarta EE 9 support, please use 9.6.0-jakarta version instead.
    • Since 9.6.0, the transitive dependency of jasperreports was removed in zkex. If you want to use the jasperreport component, please add it manually.
    • In order to be more in line with WCAG specifications, the icon element in the Rating component has changed from the Anchor element to the Idiomatic Text element.