Apache Wicket 6.13.0 released

The Apache Wicket PMC is proud to announce Apache Wicket 6.13.0!

This release marks the thirteenth minor release of Wicket 6. Starting with Wicket 6 we use semantic versioning for the future development of Wicket, and as such no API breaks are present in this release compared to 6.0.0.

New and noteworthy

This release fixes 25 bugs and adds the following improvements:

  • Online Wicket User guide (see below)
  • CDI 1.1 support (see below)
  • JQuery upgraded from 1.10.1 to 1.10.2
  • Implemented BigIntegerConverter
  • Migrate Wicket-Atmosphere to Atmosphere 2

Online Wicket reference guide

After many years of people asking for a reference guide for Apache Wicket we finally were able to add one to our site thanks to Andrea del Bene and comSysto for writing the guide and providing the hours of converting it to our site.

You can read the manual in 3 forms: multi page HTML, single page HTML and PDF.

The contents:

  • Introduction
  • How to use the example code
  • Why should I learn Wicket?
  • Wicket says “Hello, World!”
  • Wicket as page layout manager
  • Keeping control over HTML
  • Component Lifecycle
  • Page versioning and caching
  • Under the hood of request processing
  • Wicket Links and URL generation
  • Wicket models and forms
  • Wicket forms in detail
  • Displaying multiple items with repeaters
  • Internationalization with Wicket
  • Resource management with Wicket
  • An example of integration with JavaScript
  • Wicket advanced topics
  • Working with AJAX
  • Integration with enterprise containers
  • Security with Wicket
  • Test Driven Development with Wicket
  • Test Driven Development with Wicket and Spring
  • Wicket Best Practices
  • Working with Maven (Appendix)
  • Project WicketStuff (Appendix)
  • Lost in redirection with Apache Wicket (Appendix)
  • Contributing to this guide (Appendix)

Read more in the “User guide”.

New CDI-1.1 integration project

A new (experimental) module for CDI integration was added to support CDI 1.1 with Wicket. As CDI 1.0 and 1.1 are different beasts and not compatible, we had to craft a new module with specific support for the new CDI standard. The module is still experimental, but we expect to make it a default module in a couple of releases.

You can use the new Wicket CDI module by including the following dependency in your POM:

<dependency>
    <groupId>org.apache.wicket</groupId>
	<artifactId>wicket-cdi-1.1</artifactId>
	<version>0.2</version>
</dependency>

Note that you have to remove the old wicket-cdi module and the Seam conversation dependency: org.jboss.seam.conversation:seam-conversation-weld

For more information about what is new in CDI 1.1 read this blog post by Pete Muir.

JQuery update in 6.9.0

As of Wicket 6.9 we ship JQuery 1.10.1 (since 6.13.0 we ship 1.10.2). The JQuery project has decided to remove deprecated APIs from their codebase from JQuery 1.9 and up. This means that JQuery plugins using these deprecated APIs no longer work. See the JQuery migration guide for more information, available from the JQuery web site

If your application depends on these deprecated APIs you can easily downgrade to JQuery 1.8.3-the previously provided JQuery that still contains these APIs. Download the 1.8.3 release of jquery and add it to your project in its application’s init method:

@Override
 protected void init() {
     getJavaScriptLibrarySettings()
         .setJQueryReference(yourJquery183ResourceReference);
 }

CDI injection issue

In the CDI releases of Weld 2.0.1 and prior, it was assumed that injection in anonymous inner classes was not legal and when attempted, it resulted in an exception:

Caused by: org.jboss.weld.exceptions.DefinitionException:
WELD-000070 Simple bean [EnhancedAnnotatedTypeImpl] private class
com.example.HomePage$AForm cannot be a non-static inner class

This was reported as WICKET-5226, as it became an issue in Glassfish 4, which ships with Weld 2.0.1 (or earlier). We implemented a fix for this particular issue by not injecting into anonymous inner classes.

Unfortunately this was not a bug that needed fixing on our part, but rather in the Weld framework (see WELD-1441)

Therefore we reverted the commits done for WICKET-5226 and hope that Glassfish will upgrade their Weld implementation soon. For the whole story read WICKET-5264

Glassfish has fixed this in trunk according to GLASSFISH-20619 but the fix has yet to be integrated into a release.

Using this release

With Apache Maven update your dependency to (and don’t forget to update any other dependencies on Wicket projects to the same version):

<dependency>
 <groupId>org.apache.wicket</groupId>
 <artifactId>wicket-core</artifactId>
 <version>6.13.0</version>
</dependency>

Or download and build the distribution yourself, or use our convenience binary package

Upgrading from earlier versions

If you upgrade from 6.y.z this release is a drop in replacement. If you come from a version prior to 6.0.0, please read our Wicket 6 migration guide found at

Have fun!

— The Wicket team

Release Notes - Wicket - Version 6.13.0

Bug

  • WICKET-4294 - AutoCompleteTextField does not show suggestions when it is used on ModalWindow in InternetExplorer
  • WICKET-4997 - Mounted bookmarkable Page not recreated on Session Expiry
  • WICKET-5084 - ClassNotFoundException with Atmosphere on Bookmarkable pages
  • WICKET-5224 - ModalWindow is not visible in Safari when opened from a link at the bottom of a large page
  • WICKET-5321 - Incorporate Wicket Guide into website
  • WICKET-5379 - IE7: AutoCompleteTextField inside a ModalWindow shows auto complete dropdown behind ModalWindow
  • WICKET-5387 - Page#onInitialize called after an exception in the constructor of Page
  • WICKET-5400 - Behaviors#internalAdd(Behavior) erroneously gets id for stateless behaviors
  • WICKET-5402 - NullPointerException when logging out with wicket-atmosphere
  • WICKET-5404 - JQuery 1.10.1 does not work well with IE11, upgrade to 1.10.2
  • WICKET-5409 - wicket-native-websocket does not work with Safari/Safari iOS
  • WICKET-5413 - Positioning AutoCompleteTextField not correct on resized window
  • WICKET-5416 - BOM in UTF markup file breaks encoding detection
  • WICKET-5418 - PropertyValidator ignoring groups with the @NotNull annotation only
  • WICKET-5422 - ComponentRenderer.renderComponent() adds a page to DataStore
  • WICKET-5424 - Page.isPageStateless() returning true in regular run but false in WicketTester
  • WICKET-5425 - WicketTester doesn’t preserve the request cookies when #executeListener() is used
  • WICKET-5426 - Page not recognized as stateless although stateful component is hidden in #onConfigure()
  • WICKET-5429 - ResourceReference’s properties are not preserved when using reference replacement
  • WICKET-5437 - When a ConversionException is thrown, its message is not used in the ValidationError
  • WICKET-5441 - IResourceCachingStrategy implementations should only set caching if version matches
  • WICKET-5442 - TimeOfDay.valueOf(Calendar, Time) and TimeOfDay.valueOf(Time) incorrectly use 12-hour clock
  • WICKET-5444 - Make org.apache.wicket.pageStore.memory.PageTable public so custom impls of IDataStoreEvictionStrategy can be made
  • WICKET-5447 - TableTree’s NodeBorder does not properly close divs
  • WICKET-5450 - Double escaping when using EnumChoiceRenderer and DropDownChoice

Improvement

  • WICKET-4268 - Quality of ThumbnailImageResource
  • WICKET-4762 - IResourceVersion should be based on final result
  • WICKET-4905 - PagingNavigation: possible to call setStartIndex() earlier than onBeforeRender?
  • WICKET-4909 - ModalWindow overwrites window.onbeforeunload
  • WICKET-5364 - Reduce logging for wicket-atmosphere
  • WICKET-5367 - migrate Wicket-Atmosphere to Atmosphere 2
  • WICKET-5401 - provide no-argument constructor in string based header items
  • WICKET-5411 - Improve AutoLabels by updating their CSS classes automatically during Ajax requests
  • WICKET-5415 - Do not initialize pages which were not rendered
  • WICKET-5420 - Make UploadProgressBar easier to extend
  • WICKET-5423 - Create IResource based implementation of Native Web Sockets
  • WICKET-5435 - Ajaxified version of WebSession#getClientInfo should be added
  • WICKET-5436 - Implement BigIntegerConverter
  • WICKET-5443 - Increase randomness and reduce predictability of CaptchaImageResource rendered images
  • WICKET-5445 - Make CaptchaImageResource easier to extend and reuse
  • WICKET-5455 - Allow access to the JS ResourceReference of AbstractAutoCompleteBehavior
  • WICKET-5456 - Make RawMarkup extendable

Task

  • WICKET-5431 - Download pages must use ASF mirror system for current releases

Wish

  • WICKET-1197 - add/remove all buttons in Palette component
  • WICKET-4951 - Wicket-cdi and OpenWebBeans 1.1.x incompatibility