I'm in process of rewriting the Ajax support. The current (very experimental) code is available at http://svn.apache.org/repos/asf/wicket/sandbox/knopp/experimental in package org.apache.wicket.ajaxng (will be later renamed to ajax replacing current ajax classes).
Some of the improvements over current Ajax implementation.
- Should be much more stable and solid than current implementation. It supports timeout for the Ajax request and timeout for the processing afterwards. The new ajax pipeline should never hang with "chanel busy. postponing" like to current one can.
- Much smaller impact on generated markup file. Current ajax generates markup such as while for the same effect new Ajax implementation only generates
- Adding custom before/after handlers, preconditions and parameters no longer needs ugly string concatenations
- Improved throttling
- TextField/TextArea selection and cursor position is preserved when the element is refreshed with Ajax
notifymethod (can be used for animations). Also the actual replacement call can be customized.
Usage of new API
AjaxRequestAttributes defines possible configuration options for AjaxRequest.
Example of creating Ajax link that displays an confirmation window:
Note: Asynchronous preconditions are also supported, see AjaxRequestAttributes#getPreconditions.
Example of Ajax link with custom URL parameters.