The Apache Wicket team is proud to announce the immediate availability of the newest release of their component oriented open source Java web framework. Apache Wicket 1.5 has been in development for the last two years and brings many improvements over previous versions.
You can download the release here: http://www.apache.org/dyn/closer.cgi/wicket/1.5.0
Or use this in your Maven POM to upgrade to the new version:
{% highlight xml %} org.apache.wicket wicket-core 1.5.0 {% endhighlight %}
Please note that Wicket's main artifact ID has been renamed to wicket-core
.
You will need to upgrade all modules (i.e. wicket, wicket-extensions, wicket-ioc, wicket-spring, etc) to 1.5.0. It is not possible to mix previous versions of Wicket with modules of this release.
With this release the Wicket team has revised many of its internals. A short list:
EmailTextField
, NumberTextField
, UrlTextField
and RangeTextField
Behavior
to allow for client side validationsIBehavior
has been removed and AbstractBehavior
has been deprecated, you should now extend Behavior
insteadx-forwarded-for
headerJavascript
in the name have been renamed to use proper capitalization: JavaScript
A longer list of changes and improvements can be found in our migration guide.
Wicket 1.5 offers a simple, yet flexible, way for component to communicate with each other in a decoupled manner. The two major interfaces that facilitate this are:
{% highlight java %} /**
and
{% highlight java %} /**
The classes that implement these interfaces, and can thus participate in the event mechanism are: Component
, RequestCycle
, Session
, and Application
.
The mechanism allows for different event broadcast methods defined here:
{% highlight java %} /**
There is an example in wicket-examples which demonstrates the usage of this.
Applications can register custom event dispatchers in FrameworkSettings
; the dispatchers can be used to build custom event delivery mechanisms. For example a custom IEventDispatcher
mechanism can route events to annotated methods, for example:
{% highlight java %} public class MyComponent extends Component { @OnEvent private void onUserAdded(UserAddedEvent event) {...} } {% endhighlight %}
where UserAddedEvent
is the event payload object.
The default Component#onEvent
method will be called even if custom dispatchers are registered.
A default event is raised whenever Wicket begins to create an AJAX response. The payload of the event is the AjaxRequestTarget
used for event. Sample implementation:
{% highlight java %} // component that always adds itself to the ajax response public class MyComponent extends Component { public void onEvent(IEvent event) { if (event.getPayload() instanceof AjaxRequestTarget) { ((AjaxRequestTarget)event.getPayload()).add(this); } } } {% endhighlight %}