<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta charset="utf-8">
        <title>Apache Wicket 6.24.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/07/21/wicket-6.24.0-released.html -->
    	<li class=""><a href="/start/quickstart.html">Quick Start</a></li>
		<!-- /start/download.html || /news/2016/07/21/wicket-6.24.0-released.html -->
    	<li class=""><a href="/start/download.html">Download</a></li>
		<!-- /learn || /news/2016/07/21/wicket-6.24.0-released.html -->
    	<li class=""><a href="/learn">Documentation</a></li>
		<!-- /help || /news/2016/07/21/wicket-6.24.0-released.html -->
    	<li class=""><a href="/help">Support</a></li>
		<!-- /contribute || /news/2016/07/21/wicket-6.24.0-released.html -->
    	<li class=""><a href="/contribute">Contribute</a></li>
		<!-- /community || /news/2016/07/21/wicket-6.24.0-released.html -->
    	<li class=""><a href="/community">Community</a></li>
		<!-- /apache || /news/2016/07/21/wicket-6.24.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.24.0 released</h1>
        </header>
        <section class="left">
            <div class="l-full">
    <p class="meta">21 Jul 2016</p>
    <p>The Apache Wicket PMC is proud to announce Apache Wicket 6.24.0!</p>
<p>Apache Wicket is an open source Java component oriented web application
framework that powers thousands of web applications and web sites for
governments, stores, universities, cities, banks, email providers, and
more. You can find more about Apache Wicket at https://wicket.apache.org</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>
<h2 id="new-and-noteworthy">New and noteworthy</h2>
<ul>
  <li>
    <p>upgrades JQuery dependency to 1.12.4 and 2.2.4</p>
  </li>
  <li>
    <p>increases performance when using KeyInSessionSunJceCryptFactory</p>
  </li>
</ul>
<h2 id="using-this-release">Using this release</h2>
<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.24.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.24.0">6.24.0 source download</a></li>
  <li>Binary: <a href="http://www.apache.org/dyn/closer.cgi/wicket/6.24.0/binaries">6.24.0 binary download</a></li>
</ul>
<h2 id="upgrading-from-earlier-versions">Upgrading from earlier versions</h2>
<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="http://s.apache.org/wicket6migration">http://s.apache.org/wicket6migration</a></li>
</ul>
<p>Have fun!</p>
<p>— The Wicket team</p>
<p>================================</p>
<p>The signatures for the source release artefacts:</p>
<p>Signature for apache-wicket-6.24.0.zip:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org
iEYEABECAAYFAleLyQ4ACgkQJBX8W/xy/UU+KgCg1k+wBV51fa1YXIZWkObNA3WS
JDcAn3nrxumEXqau3kMoFd3Nb2FpOHjz
=OALQ
-----END PGP SIGNATURE-----
</code></pre></div></div>
<p>Signature for apache-wicket-6.24.0.tar.gz:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org
iEYEABECAAYFAleLyQ4ACgkQJBX8W/xy/UXYFwCeP13OmmFBJqljbW5CKYwUbFSY
QxEAnif6bikYEgoeNv7eBeUsoutC8Hp8
=lDjk
-----END PGP SIGNATURE-----
</code></pre></div></div>
<p>================================</p>
<h3 id="this-release">This Release</h3>
<h4 id="changelog-for-6240">CHANGELOG for 6.24.0:</h4>
<h5 id="bug">Bug</h5>
<ul>
  <li>[WICKET-6154] - Performance bottleneck when using KeyInSessionSunJceCryptFactory</li>
  <li>[WICKET-6169] - NullPointerException accessing AbstractRequestLogger.getLiveSessions</li>
  <li>[WICKET-6172] - Inconsistent results from getTag[s]ByWicketId</li>
  <li>[WICKET-6174] - Browser/Client info navigatorJavaEnabled property returns undefined</li>
  <li>[WICKET-6175] - Aautocomplete suggestion window is not closing in IE11</li>
  <li>[WICKET-6181] - Revert the removal of the default error message when uploading too big files</li>
  <li>[WICKET-6191] - AjaxTimerBehavior will stop after ajax update of component it is attached to</li>
  <li>[WICKET-6202] - Guide: 26.1 Page storing, section HttpSessionDataStore - example code is not correct</li>
  <li>[WICKET-6204] - Copy only the provided attributes for Ajax link inclusion</li>
</ul>
<h5 id="improvement">Improvement</h5>
<ul>
  <li>[WICKET-6053] - Allow to reuse the same application instance in several tests</li>
  <li>[WICKET-6178] - MetaDataHeaderItem # generateString() should return specials characters escaped like StringEscapeUtils.escapeHtml(s) does</li>
  <li>[WICKET-6186] - Upgrade JQuery to 1.12.4/2.2.4</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>
