<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta charset="utf-8">
        <title>Apache Wicket 6.22.0 released | Apache Wicket</title>
        <meta name="viewport" content="width=device-width, initial-scale=1" />

        <link rel="shortcut icon" href="/favicon.ico" type="image/vnd.microsoft.icon" />
        <link rel="stylesheet" href="/css/style.css" type="text/css" media="screen" />
        <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />

		<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>

    </head>

    <body class="">
        <div class="header default">
    <div class="l-menu-container">
<nav class="mainmenu">
    <ul>
		<!-- /start/quickstart.html || /news/2016/02/19/wicket-6.22.0-released.html -->
    	<li class=""><a href="/start/quickstart.html">Quick Start</a></li>
		<!-- /start/download.html || /news/2016/02/19/wicket-6.22.0-released.html -->
    	<li class=""><a href="/start/download.html">Download</a></li>
		<!-- /learn || /news/2016/02/19/wicket-6.22.0-released.html -->
    	<li class=""><a href="/learn">Documentation</a></li>
		<!-- /help || /news/2016/02/19/wicket-6.22.0-released.html -->
    	<li class=""><a href="/help">Support</a></li>
		<!-- /contribute || /news/2016/02/19/wicket-6.22.0-released.html -->
    	<li class=""><a href="/contribute">Contribute</a></li>
		<!-- /community || /news/2016/02/19/wicket-6.22.0-released.html -->
    	<li class=""><a href="/community">Community</a></li>
		<!-- /apache || /news/2016/02/19/wicket-6.22.0-released.html -->
    	<li class=""><a href="/apache">Apache</a></li>
    </ul>
</nav>
        <div class="logo">
    <a href="/"><img src="/img/logo-apachewicket.svg" alt="Apache Wicket"></a>
</div>
    </div>
</div>
<main>
    <div class="l-container">
        <header class="l-full preamble">
            <h1>Apache Wicket 6.22.0 released</h1>
        </header>
        <section class="left">
            <div class="l-full">
    <p class="meta">19 Feb 2016</p>
    <p>The Apache Wicket PMC is proud to announce Apache Wicket 6.22.0!</p>
<p>This release marks another minor release of Wicket 6. We
use semantic versioning for the development of Wicket, and as such no
API breaks are present breaks are present in this release compared to
6.0.0.</p>
<h3 id="using-this-release">Using this release</h3>
<p>With Apache Maven update your dependency to (and don’t forget to
update any other dependencies on Wicket projects to the same version):</p>
<figure class="highlight"><pre><code class="language-xml" data-lang="xml"><span class="nt">&lt;dependency&gt;</span>
<span class="nt">&lt;groupId&gt;</span>org.apache.wicket<span class="nt">&lt;/groupId&gt;</span>
<span class="nt">&lt;artifactId&gt;</span>wicket-core<span class="nt">&lt;/artifactId&gt;</span>
<span class="nt">&lt;version&gt;</span>6.22.0<span class="nt">&lt;/version&gt;</span>
<span class="nt">&lt;/dependency&gt;</span></code></pre></figure>
<p>Or download and build the distribution yourself, or use our
convenience binary package</p>
<ul>
  <li>Source: <a href="http://www.apache.org/dyn/closer.cgi/wicket/6.22.0">6.22.0 source download</a></li>
  <li>Binery: <a href="http://www.apache.org/dyn/closer.cgi/wicket/6.22.0/binaries">6.22.0 binary download</a></li>
</ul>
<h3 id="upgrading-from-earlier-versions">Upgrading from earlier versions</h3>
<p>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</p>
<ul>
  <li><a href="https://cwiki.apache.org/confluence/display/WICKET/Migration+to+Wicket+6.0">migration to Wicket 6</a></li>
</ul>
<p>Have fun!</p>
<p>— The Wicket team</p>
<h3 id="this-release">This release</h3>
<h4 id="changelog-for-6220">CHANGELOG for 6.22.0:</h4>
<p>The following changes were made in Wicket for this release.</p>
<h4 id="bug">Bug</h4>
<ul>
  <li>[WICKET-6006] - ModalWindow.closeCurrent() causes 414 status error</li>
  <li>[WICKET-6017] - Tests fail when executed with not expected locale</li>
  <li>[WICKET-6020] - GuiceFieldValueFactory returns the NULL_SENTINEL
from the cache</li>
  <li>[WICKET-6030] - Support /META-INF/services/org.apache.wicket.IInitializer (backport to 6.x)</li>
  <li>[WICKET-6032] - Wicket.Ajax.done() called twice on redirect</li>
  <li>[WICKET-6037] - ModalWindow vulnerable to Javascript injection through title model</li>
  <li>[WICKET-6040] - DebugBar not serializable exception</li>
  <li>[WICKET-6044] - AjaxFormChoiceComponentUpdatingBehavior: Duplicate input values according to WICKET-5948</li>
  <li>[WICKET-6048] - German Translation for EqualInputValidator wrong</li>
  <li>[WICKET-6050] - Wicket Ajax (Wicket.From.serializeElement) causes 400 bad request</li>
  <li>[WICKET-6052] - CSS header contribution overlap</li>
  <li>[WICKET-6062] - MockHttpSession should renew its id after invalidation</li>
  <li>[WICKET-6063] - Add support for WebSocketRequest#getUrl() and other properties which are available in the handshake request</li>
  <li>[WICKET-6064] - WebSocketResponse.sendRedirect could be supported with <ajax-response><redirect>...&lt;/&gt;&lt;/&gt;</redirect></ajax-response></li>
  <li>[WICKET-6068] - The key RangeValidator.exact is not mapped in Application_de.properties</li>
  <li>[WICKET-6069] - OnChangeAjaxBehavior does not work if the url contains a request parameter with same name as wicket id</li>
  <li>[WICKET-6084] - ajax request failure handler receives incorrect arguments</li>
  <li>[WICKET-6085] - AjaxTimerBehavior with failure handler cause memory leak in browser</li>
  <li>[WICKET-6087] - Invalid AbstractRequestWrapperFactory.needsWrapper method scope: package - cannot create a custom implementation</li>
</ul>
<h4 id="improvement">Improvement</h4>
<ul>
  <li>[WICKET-5950] - Model and GenericBaseModel could both implement IObjectClassAwareModel</li>
  <li>[WICKET-5969] - Please give us access to PageTable.index pageId queue</li>
  <li>[WICKET-6019] - Remove ‘final’ modifier for Localizer#getStringIgnoreSettings() methods</li>
  <li>[WICKET-6051] - Improve performance of CssUrlReplacer</li>
  <li>[WICKET-6054] - Provide a factory method for the WebSocketResponse &amp; WebSocketRequest</li>
  <li>[WICKET-6073] - Use NIO Jetty connector for the quickstart</li>
  <li>[WICKET-6081] - Add “assertNotRequired” to the WicketTester</li>
</ul>
<h4 id="task">Task</h4>
<ul>
  <li>[WICKET-6071] - Upgrade jQuery to 1.12 / 2.2.0</li>
</ul>
</div>
        </section>
    </div>
</main>
        <footer class="l-container">
            <div class="l-full">
   	<img src="/img/asf_logo_url.svg" style="height:90px; float:left; margin-right:10px;">
    <div style="margin-top:12px;">Copyright © 2020 — The Apache Software Foundation. Apache Wicket, Wicket, Apache, the Apache feather logo, and the Apache Wicket project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</div>
</div>
        </footer>
    </body>

</html>
