<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta charset="utf-8">
        <title>Apache Wicket 6.16.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/2014/06/21/wicket-6.16.0-released.html -->
    	<li class=""><a href="/start/quickstart.html">Quick Start</a></li>
		<!-- /start/download.html || /news/2014/06/21/wicket-6.16.0-released.html -->
    	<li class=""><a href="/start/download.html">Download</a></li>
		<!-- /learn || /news/2014/06/21/wicket-6.16.0-released.html -->
    	<li class=""><a href="/learn">Documentation</a></li>
		<!-- /help || /news/2014/06/21/wicket-6.16.0-released.html -->
    	<li class=""><a href="/help">Support</a></li>
		<!-- /contribute || /news/2014/06/21/wicket-6.16.0-released.html -->
    	<li class=""><a href="/contribute">Contribute</a></li>
		<!-- /community || /news/2014/06/21/wicket-6.16.0-released.html -->
    	<li class=""><a href="/community">Community</a></li>
		<!-- /apache || /news/2014/06/21/wicket-6.16.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.16.0 released</h1>
        </header>
        <section class="left">
            <div class="l-full">
    <p class="meta">21 Jun 2014</p>
    <p>The Apache Wicket PMC is proud to announce Apache Wicket 6.16.0!</p>
<p>This release marks the sixteenth 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.</p>
<h3 id="new-and-noteworthy">New and noteworthy</h3>
<p>This release fixes 15 bugs and adds the following improvements:</p>
<ul>
  <li>Upgrade JQuery to latest releases - 1.11.1 &amp; 2.1.1</li>
  <li>Upgrade Atmosphere to latest version</li>
  <li>Generation of wicket ids with prefix / suffix</li>
  <li>Introduce CharSequenceResource similar to ByteArrayResource</li>
</ul>
<p>The full list of improvements and fixes can be found at the end of this
announcement.</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.16.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.16.0">6.16.0 source download</a></li>
  <li>Binary: <a href="http://www.apache.org/dyn/closer.cgi/wicket/6.16.0/binaries">6.16.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.0</a></li>
</ul>
<p>Have fun!</p>
<p>— The Wicket team</p>
<h3 id="release-notes---wicket---version-6160">Release Notes - Wicket - Version 6.16.0</h3>
<h4 id="bug">Bug</h4>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>* [WICKET-4545] - MarkupNotFoundException for Fragment and TransparentWebMarkupContainer
* [WICKET-5553] - When using an Ajax request to display initially hidden components inside inline enclosures, only the first one appears.
* [WICKET-5560] - A 404 error occurs when using a CryptoMapper
* [WICKET-5569] - Unable to find markup for children of deeply nested IComponentResolvers during Ajax response
* [WICKET-5570] - Rescheduling the same ajax timer behavior causes memory leak in the browser
* [WICKET-5573] - FilterToolbar generics broken
* [WICKET-5581] - CachingRes​ourceStrea​mLocator is not extension-​aware
* [WICKET-5582] - ServletWebResponse#encodeUrl() makes absolute Urls relative
* [WICKET-5589] - Upgrade wicket-atmosphere to the latest version of atmosphere
* [WICKET-5591] - Missing translation for HoursValidator.range (in DateTimeField)
* [WICKET-5592] - Add a method to clear the cache of CachingResourceStreamLocator
* [WICKET-5593] - AjaxFormValidatingBehavior attempts to update non-visible feedback panels
* [WICKET-5595] - Atmosphere: updates infinitly with long polling transport
* [WICKET-5596] - DropDownChoice#wantsOnSelectionChangedNotifications(T) not being called on unmounted page
* [WICKET-5601] - AbstractSingleSelectChoice fails with NullPointerException when its choice renderer returns null from #getIdValue() 
</code></pre></div></div>
<h4 id="improvement">Improvement</h4>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>* [WICKET-5563] - RestartResponseAtInterceptPageException - add public function to retrieve originalUrl
* [WICKET-5574] - ComponentRenderer should use Application#createRequestCycle
* [WICKET-5575] - Add support in FormTester#submit(String|Component) for Ajax submitters
* [WICKET-5577] - Generation of wicket ids with prefix / suffix
* [WICKET-5580] - Allow markup to find child fragments when wicket:child is inside a component tag
* [WICKET-5585] - Wicket Extension Automplete does not work well with JavaScriptFilteredIntoFooterHeaderResponse
* [WICKET-5586] - NextButton isEnabled() should bo logical conjunction of getWizardModel().isNextAvailable() and super.isEnabled()
* [WICKET-5600] - Introduce CharSequenceResource similar to ByteArrayResource
* [WICKET-5606] - SelectOptions with #setRecreateChoices(true) loses selection on form errors
</code></pre></div></div>
<h4 id="task">Task</h4>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>* [WICKET-5587] - Upgrade JQuery to latest releases - 1.11.1 &amp; 2.1.1
</code></pre></div></div>
</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>
