<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta charset="utf-8">
        <title>Apache Wicket News | 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.3.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-container">
<nav class="mainmenu">
    <ul>
		<!-- /start/quickstart.html || /news/ -->
    	<li class=""><a href="/start/quickstart.html">Quick Start</a></li>
		<!-- /start/download.html || /news/ -->
    	<li class=""><a href="/start/download.html">Download</a></li>
		<!-- /learn || /news/ -->
    	<li class=""><a href="/learn">Documentation</a></li>
		<!-- /help || /news/ -->
    	<li class=""><a href="/help">Support</a></li>
		<!-- /contribute || /news/ -->
    	<li class=""><a href="/contribute">Contribute</a></li>
		<!-- /community || /news/ -->
    	<li class=""><a href="/community">Community</a></li>
		<!-- /apache || /news/ -->
    	<li class=""><a href="/apache">Apache</a></li>
    </ul>
</nav>
        <div class="logo">
    <a href="/"><img src="/img/logo-apachewicket-white.svg" alt="Apache Wicket"></a>
</div>
    </div>
</div>
<main>
    <div class="l-container">
        <header class="l-full preamble">
            <h1>Apache Wicket News</h1>
            <h2>Releases, Security updates and more&mdash;all in one neat feed.</h2>
            <p>The news is published in several venues. All announcements are sent to the Apache announcement mailing list, our announcement, user and development mailing lists, the news feed of this website and of course this website.</p>
        </header>
        <div class="l-two-third">
<div class="l-first">
  <h1 id="all-news-for-2017">All News for 2017</h1>
  <p>This section contains all news items published in <a href="/news/2017">2017</a>.</p>
  <article>
	<h3 id="/news/2017/08/12/wicket-8.0.0-M7-released.html">Apache Wicket 8.0.0-M7 released</h3>
    <small>12 Aug 2017</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.0.0-M7! 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...
	<a href="/news/2017/08/12/wicket-8.0.0-M7-released.html">more</a></p>
</article>
  <article>
	<h3 id="/news/2017/07/12/wicket-7.8.0-released.html">Apache Wicket 7.8.0 released</h3>
    <small>12 Jul 2017</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 7.8.0! 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...
	<a href="/news/2017/07/12/wicket-7.8.0-released.html">more</a></p>
</article>
  <article>
	<h3 id="/news/2017/07/06/wicket-6.27.0-released.html">Apache Wicket 6.27.0 released</h3>
    <small>06 Jul 2017</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.27.0! 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...
	<a href="/news/2017/07/06/wicket-6.27.0-released.html">more</a></p>
</article>
  <article>
	<h3 id="/news/2017/05/18/wicket-8.0.0-M6-released.html">Apache Wicket 8.0.0-M6 released</h3>
    <small>18 May 2017</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.0.0-M6! 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...
	<a href="/news/2017/05/18/wicket-8.0.0-M6-released.html">more</a></p>
</article>
  <article>
	<h3 id="/news/2017/05/16/wicket-7.7.0-released.html">Apache Wicket 7.7.0 released</h3>
    <small>16 May 2017</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 7.7.0! 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...
	<a href="/news/2017/05/16/wicket-7.7.0-released.html">more</a></p>
</article>
  <article>
	<h3 id="/news/2017/03/29/wicket-8.0.0-M5-released.html">Apache Wicket 8.0.0-M5 released</h3>
    <small>29 Mar 2017</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.0.0-M5! 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...
	<a href="/news/2017/03/29/wicket-8.0.0-M5-released.html">more</a></p>
</article>
  <article>
	<h3 id="/news/2017/02/07/wicket-8.0.0-M4-released.html">Apache Wicket 8.0.0-M4 released</h3>
    <small>07 Feb 2017</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.0.0-M4! 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...
	<a href="/news/2017/02/07/wicket-8.0.0-M4-released.html">more</a></p>
</article>
  <div class="l-first"></div>
  <hr />
  <div class="l-first">
    <h1 id="all-news-for-2016">All News for 2016</h1>
    <p>This section contains all news items published in <a href="/news/2016">2016</a>.</p>
    <article>
	<h3 id="/news/2016/12/31/cve-2016-6793.html">CVE-2016-6793 Apache Wicket deserialization vulnerability</h3>
    <small>31 Dec 2016</small>
	<p>Severity: Low Vendor: The Apache Software Foundation Versions Affected: Apache Wicket 6.x and 1.5.x Description: Depending on the ISerializer set in the Wicket application, it’s possible that a Wicket’s object deserialized from an untrusted source and utilized by the application to causes the code to enter in an infinite loop....
	<a href="/news/2016/12/31/cve-2016-6793.html">more</a></p>
</article>
    <article>
	<h3 id="/news/2016/12/29/wicket-8.0.0-M3-released.html">Apache Wicket 8.0.0-M3 released</h3>
    <small>29 Dec 2016</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.0.0-M3! 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...
	<a href="/news/2016/12/29/wicket-8.0.0-M3-released.html">more</a></p>
</article>
    <article>
	<h3 id="/news/2016/12/29/wicket-7.6.0-released.html">Apache Wicket 7.6.0 released</h3>
    <small>29 Dec 2016</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 7.6.0! 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...
	<a href="/news/2016/12/29/wicket-7.6.0-released.html">more</a></p>
</article>
    <article>
	<h3 id="/news/2016/12/29/wicket-6.26.0-released.html">Apache Wicket 6.26.0 released</h3>
    <small>29 Dec 2016</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.26.0! 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...
	<a href="/news/2016/12/29/wicket-6.26.0-released.html">more</a></p>
</article>
    <article>
	<h3 id="/news/2016/11/08/cve-2016-6806.html">CVE-2016-6806 Apache Wicket CSRF detection vulnerability</h3>
    <small>08 Nov 2016</small>
	<p>Severity: Important Vendor: The Apache Software Foundation Versions Affected: Apache Wicket 6.20.0, 6.21.0, 6.22.0, 6.23.0, 6.24.0, 7.0.0, 7.1.0, 7.2.0, 7.3.0, 7.4.0 and 8.0.0-M1 Description: Affected versions of Apache Wicket provide a CSRF prevention measure that fails to discover some cross origin requests. The mitigation is to not only check the...
	<a href="/news/2016/11/08/cve-2016-6806.html">more</a></p>
</article>
    <article>
	<h3 id="/news/2016/10/26/wicket-8.0.0-M2-released.html">Apache Wicket 8.0.0-M2 released</h3>
    <small>26 Oct 2016</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.0.0-M2! 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...
	<a href="/news/2016/10/26/wicket-8.0.0-M2-released.html">more</a></p>
</article>
    <article>
	<h3 id="/news/2016/10/26/wicket-7.5.0-released.html">Apache Wicket 7.5.0 released</h3>
    <small>26 Oct 2016</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 7.5.0! 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...
	<a href="/news/2016/10/26/wicket-7.5.0-released.html">more</a></p>
</article>
    <article>
	<h3 id="/news/2016/10/26/wicket-6.25.0-released.html">Apache Wicket 6.25.0 released</h3>
    <small>26 Oct 2016</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.25.0! 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...
	<a href="/news/2016/10/26/wicket-6.25.0-released.html">more</a></p>
</article>
    <article>
	<h3 id="/news/2016/08/05/wicket-1.5.16-released.html">Wicket 1.5.16 released</h3>
    <small>05 Aug 2016</small>
	<p>This is the sixteenth maintenance release of the Wicket 1.5.x series. This release brings over 2 bug fixes. CHANGELOG for 1.5.16: Bug CVE-2013-2186: Disable (de)serialization of Commons FileUpload items. CVE-2016-3092: Apache Commons Fileupload information disclosure vulnerability To use in Maven: &lt;dependency&gt; &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt; &lt;artifactId&gt;wicket-core&lt;/artifactId&gt; &lt;version&gt;1.5.16&lt;/version&gt; &lt;/dependency&gt; Download the full distribution (including...
	<a href="/news/2016/08/05/wicket-1.5.16-released.html">more</a></p>
</article>
    <article>
	<h3 id="/news/2016/08/05/cve-2016-3092.html">CVE-2016-3092 &amp; CVE-2013-2186 Apache Commons Fileupload vulnerabilities</h3>
    <small>05 Aug 2016</small>
	<p>Severity: Important Vendor: The Apache Software Foundation Versions Affected: Apache Wicket 1.5.x, 6.x and 7.x Description: CVE-2016-3092: A malicious client can send file upload requests that cause the HTTP server using the Apache Commons Fileupload library to become unresponsive, preventing the server from servicing other requests. This flaw is not...
	<a href="/news/2016/08/05/cve-2016-3092.html">more</a></p>
</article>
    <article>
	<h3 id="/news/2016/07/25/wicket-8.0.0-M1-released.html">Apache Wicket 8.0.0-M1 released</h3>
    <small>25 Jul 2016</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.0.0-M1! 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...
	<a href="/news/2016/07/25/wicket-8.0.0-M1-released.html">more</a></p>
</article>
    <article>
	<h3 id="/news/2016/07/21/wicket-7.4.0-released.html">Apache Wicket 7.4.0 released</h3>
    <small>21 Jul 2016</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 7.4.0! 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...
	<a href="/news/2016/07/21/wicket-7.4.0-released.html">more</a></p>
</article>
    <article>
	<h3 id="/news/2016/07/21/wicket-6.24.0-released.html">Apache Wicket 6.24.0 released</h3>
    <small>21 Jul 2016</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.24.0! 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...
	<a href="/news/2016/07/21/wicket-6.24.0-released.html">more</a></p>
</article>
    <article>
	<h3 id="/news/2016/05/05/wicket-7.3.0-released.html">Apache Wicket 7.3.0 released</h3>
    <small>05 May 2016</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 7.3.0! 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...
	<a href="/news/2016/05/05/wicket-7.3.0-released.html">more</a></p>
</article>
    <article>
	<h3 id="/news/2016/05/05/wicket-6.23.0-released.html">Apache Wicket 6.23.0 released</h3>
    <small>05 May 2016</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.23.0! 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...
	<a href="/news/2016/05/05/wicket-6.23.0-released.html">more</a></p>
</article>
    <article>
	<h3 id="/news/2016/03/02/cve-2015-7520.html">CVE-2015-7520 Apache Wicket XSS vulnerability</h3>
    <small>02 Mar 2016</small>
	<p>Severity: Important Vendor: The Apache Software Foundation Versions Affected: Apache Wicket 1.5.x, 6.x and 7.x Description: It is possible for JavaScript statements to break out of a RadioGroup’s and CheckBoxMultipleChoice’s “value” attribute of &lt;input&gt; elements This might pose a security threat if the written JavaScript contains user provided data. The...
	<a href="/news/2016/03/02/cve-2015-7520.html">more</a></p>
</article>
    <article>
	<h3 id="/news/2016/03/01/cve-2015-5347.html">CVE-2015-5347 Apache Wicket XSS vulnerability</h3>
    <small>01 Mar 2016</small>
	<p>Severity: Important Vendor: The Apache Software Foundation Versions Affected: Apache Wicket 1.5.x, 6.x and 7.x Description: It is possible for JavaScript statements to break out of a ModalWindow’s title - only quotes are escaped in the JavaScript settings object, allowing JavaScript to be injected into the markup. This might pose...
	<a href="/news/2016/03/01/cve-2015-5347.html">more</a></p>
</article>
    <article>
	<h3 id="/news/2016/02/19/wicket-6.22.0-released.html">Apache Wicket 6.22.0 released</h3>
    <small>19 Feb 2016</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.22.0! 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. Using this release With...
	<a href="/news/2016/02/19/wicket-6.22.0-released.html">more</a></p>
</article>
    <article>
	<h3 id="/news/2016/02/19/wicket-1.5.15-released.html">Wicket 1.5.15 released</h3>
    <small>19 Feb 2016</small>
	<p>This is the fifteenth maintenance release of the Wicket 1.5.x series. This release brings over 2 bug fixes. CHANGELOG for 1.5.15: Bug [WICKET-6037] - ModalWindow vulnerable to Javascript injection through title model Escape the generated markup for attribute names and values in CheckBoxMultipleChoice and RadioChoice To use in Maven: &lt;dependency&gt;...
	<a href="/news/2016/02/19/wicket-1.5.15-released.html">more</a></p>
</article>
    <article>
	<h3 id="/news/2016/01/20/wicket-7.2.0-released.html">Apache Wicket 7.2.0 released</h3>
    <small>20 Jan 2016</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 7.2.0! This release marks another minor release of Wicket 7. 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 7.0.0. New and noteworthy In...
	<a href="/news/2016/01/20/wicket-7.2.0-released.html">more</a></p>
</article>
    <div class="l-first"></div>
    <hr />
    <div class="l-first">
      <h1 id="all-news-for-2015">All News for 2015</h1>
      <p>This section contains all news items published in <a href="/news/2015">2015</a>.</p>
      <article>
	<h3 id="/news/2015/11/16/wicket-6.21.0-released.html">Apache Wicket 6.21.0 released</h3>
    <small>16 Nov 2015</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.21.0! 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. Using this release With...
	<a href="/news/2015/11/16/wicket-6.21.0-released.html">more</a></p>
</article>
      <article>
	<h3 id="/news/2015/11/15/wicket-1.4.x-eol.html">Apache Wicket 1.4.x end of life</h3>
    <small>15 Nov 2015</small>
	<p>The Apache Wicket team announces that support for Apache Wicket 1.4.x ends on 16 November 2015. On the same day Wicket 1.5.x enters “security fixes” maintenance mode. This means that after 16 October 2015: - no more releases from the 1.4.x branch - bugs affecting only the 1.4.x branch will...
	<a href="/news/2015/11/15/wicket-1.4.x-eol.html">more</a></p>
</article>
      <article>
	<h3 id="/news/2015/10/25/wicket-7.1.0-released.html">Apache Wicket 7.1.0 released</h3>
    <small>25 Oct 2015</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 7.1.0! This release marks another minor release of Wicket 7. 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 7.0.0. New and noteworthy Significant...
	<a href="/news/2015/10/25/wicket-7.1.0-released.html">more</a></p>
</article>
      <article>
	<h3 id="/news/2015/10/24/wicket-1.5.14-released.html">Wicket 1.5.14 released</h3>
    <small>24 Oct 2015</small>
	<p>This is the fourteenth maintenance release of the Wicket 1.5.x series. This release brings over 4 bug fixes and 1 improvement. CHANGELOG for 1.5.14: ** Bug * [WICKET-5838] - Last-modified header of external markup is ignored * [WICKET-5927] - Velocity remote code execution * [WICKET-6000] - Wicket 1.5 DTD link...
	<a href="/news/2015/10/24/wicket-1.5.14-released.html">more</a></p>
</article>
      <article>
	<h3 id="/news/2015/07/28/wicket-7.0-released.html">Apache Wicket v7.0 released</h3>
    <small>28 Jul 2015</small>
	<p>The Apache Software Foundation announces Apache Wicket™ v7.0 Open Source Java web framework that powers thousands of web applications and web sites for governments, stores, universities, cities, banks, email providers, and more. The Apache Software Foundation (ASF), the all-volunteer developers, stewards, and incubators of nearly 150 Open Source projects and...
	<a href="/news/2015/07/28/wicket-7.0-released.html">more</a></p>
</article>
      <article>
	<h3 id="/news/2015/06/21/wicket-7.0.0-M6-released.html">Apache Wicket 7.0.0-M6 released</h3>
    <small>21 Jun 2015</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 7.0.0-M6! We have released another milestone release for Apache Wicket 7. We aim to finalise Wicket 7 over the coming months and request your help in testing the new major version. Caveats It is still a development version so expect...
	<a href="/news/2015/06/21/wicket-7.0.0-M6-released.html">more</a></p>
</article>
      <article>
	<h3 id="/news/2015/06/14/wicket-6.20.0-released.html">Apache Wicket 6.20.0 released</h3>
    <small>14 Jun 2015</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.20.0! This release marks another 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. Using this...
	<a href="/news/2015/06/14/wicket-6.20.0-released.html">more</a></p>
</article>
      <article>
	<h3 id="/news/2015/02/13/wicket-1.5.13-released.html">Wicket 1.5.13 released</h3>
    <small>13 Feb 2015</small>
	<p>This is the thirteenth maintenance release of the Wicket 1.5.x series. This release brings over 1 bug fix and 1 improvement.
  Git tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket-core&lt;/artifactId&gt;
    &lt;version&gt;1.5.13&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including sources)
	<a href="/news/2015/02/13/wicket-1.5.13-released.html">more</a></p>
</article>
      <article>
	<h3 id="/news/2015/02/13/new-committer-Sebastien-Briquet.html">New committer - Sebastien Briquet</h3>
    <small>13 Feb 2015</small>
	<p>The Project Management Committee (PMC) for Apache Wicket has asked Sebastien Briquet to become a committer and we are pleased to announce that he has accepted. Sebastien has been involved with Wicket for several years now by developing one of the most successful integrations with JavaScript libraries, namely Wicket jQuery...
	<a href="/news/2015/02/13/new-committer-Sebastien-Briquet.html">more</a></p>
</article>
      <article>
	<h3 id="/news/2015/02/02/wicket-7.0.0-M5-released.html">Apache Wicket 7.0.0-M5 released</h3>
    <small>02 Feb 2015</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 7.0.0-M5! We have released another milestone release for Apache Wicket 7. We aim to finalise Wicket 7 over the coming months and request your help in testing the new major version. Caveats It is still a development version so expect...
	<a href="/news/2015/02/02/wicket-7.0.0-M5-released.html">more</a></p>
</article>
      <article>
	<h3 id="/news/2015/02/02/wicket-6.19.0-released.html">Apache Wicket 6.19.0 released</h3>
    <small>02 Feb 2015</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.19.0! This release marks another 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. Using this...
	<a href="/news/2015/02/02/wicket-6.19.0-released.html">more</a></p>
</article>
      <div class="l-first"></div>
      <hr />
      <div class="l-first">
        <h1 id="all-news-for-2014">All News for 2014</h1>
        <p>This section contains all news items published in <a href="/news/2014">2014</a>.</p>
        <article>
	<h3 id="/news/2014/11/05/wicket-7.0.0-M4-released.html">Apache Wicket 7.0.0-M4 released</h3>
    <small>05 Nov 2014</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 7.0.0-M4! We have released another milestone release for Apache Wicket 7. We aim to finalise Wicket 7 over the coming months and request your help in testing the new major version. Caveats It is still a development version so expect...
	<a href="/news/2014/11/05/wicket-7.0.0-M4-released.html">more</a></p>
</article>
        <article>
	<h3 id="/news/2014/11/05/wicket-6.18.0-released.html">Apache Wicket 6.18.0 released</h3>
    <small>05 Nov 2014</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.18.0! This release marks another 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. Using this...
	<a href="/news/2014/11/05/wicket-6.18.0-released.html">more</a></p>
</article>
        <article>
	<h3 id="/news/2014/09/22/cve-2014-3526.html">CVE-2014-3526 - Apache Wicket Information disclosure vulnerability</h3>
    <small>22 Sep 2014</small>
	<p>Severity: Important Vendor: The Apache Software Foundation Versions Affected: Apache Wicket 1.5.11, 6.16.0 and 7.0.0-M2 Description: When rendering a web page Wicket checks the request url against the one at the render time. It is possible the application to change the page parameters (this includes both the query parameters and...
	<a href="/news/2014/09/22/cve-2014-3526.html">more</a></p>
</article>
        <article>
	<h3 id="/news/2014/09/15/wicket-1.5.12-released.html">Wicket 1.5.12 released</h3>
    <small>15 Sep 2014</small>
	<p>This is the twelfth maintenance release of the Wicket 1.5.x series. This release brings over 5 bug fixes and improvements.
  Git tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket-core&lt;/artifactId&gt;
    &lt;version&gt;1.5.12&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including sources)
	<a href="/news/2014/09/15/wicket-1.5.12-released.html">more</a></p>
</article>
        <article>
	<h3 id="/news/2014/08/24/wicket-6.17.0-released.html">Apache Wicket 6.17.0 released</h3>
    <small>24 Aug 2014</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.17.0! This release marks the seventeenth 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. New...
	<a href="/news/2014/08/24/wicket-6.17.0-released.html">more</a></p>
</article>
        <article>
	<h3 id="/news/2014/08/23/wicket-7.0.0-M3-released.html">Apache Wicket 7.0.0-M3 released</h3>
    <small>23 Aug 2014</small>
	<p>We have released the third of a series of milestone releases for Apache Wicket 7. We aim to finalise Wicket 7 over the coming months and request your help in testing the new major version. Caveats It is still a development version so expect minor API breaks to happen over...
	<a href="/news/2014/08/23/wicket-7.0.0-M3-released.html">more</a></p>
</article>
        <article>
	<h3 id="/news/2014/06/21/wicket-6.16.0-released.html">Apache Wicket 6.16.0 released</h3>
    <small>21 Jun 2014</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.16.0! 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. New...
	<a href="/news/2014/06/21/wicket-6.16.0-released.html">more</a></p>
</article>
        <article>
	<h3 id="/news/2014/06/20/wicket-7.0.0-M2-released.html">Apache Wicket 7.0.0-M2 released</h3>
    <small>20 Jun 2014</small>
	<p>We have released the first of a series of milestone releases for Apache Wicket 7. We aim to finalise Wicket 7 over the coming months and request your help in testing the new major version. Caveats It is still a development version so expect API breaks to happen over the...
	<a href="/news/2014/06/20/wicket-7.0.0-M2-released.html">more</a></p>
</article>
        <article>
	<h3 id="/news/2014/04/30/wicket-7.0.0-M1-released.html">Apache Wicket 7.0.0-M1 released</h3>
    <small>30 Apr 2014</small>
	<p>We have released the first of a series of milestone releases for Apache Wicket 7. We aim to finalise Wicket 7 over the coming months and request your help in testing the new major version. Caveats It is still a development version so expect API breaks to happen over the...
	<a href="/news/2014/04/30/wicket-7.0.0-M1-released.html">more</a></p>
</article>
        <article>
	<h3 id="/news/2014/04/23/wicket-6.15.0-released.html">Apache Wicket 6.15.0 released</h3>
    <small>23 Apr 2014</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.15.0! This release marks the fifteenth 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. New...
	<a href="/news/2014/04/23/wicket-6.15.0-released.html">more</a></p>
</article>
        <article>
	<h3 id="/news/2014/02/21/cve-2014-0043.html">CVE-2014-0043 - Apache Wicket Information disclosure vulnerability</h3>
    <small>21 Feb 2014</small>
	<p>Severity: Important Vendor: The Apache Software Foundation Versions Affected: Apache Wicket 1.5.10 and 6.13.0 Description: By issuing requests to special urls handled by Wicket it is possible to check for the existence of particular classes in the classpath and thus check whether a third party library with a known security...
	<a href="/news/2014/02/21/cve-2014-0043.html">more</a></p>
</article>
        <article>
	<h3 id="/news/2014/02/20/wicket-6.14.0-released.html">Apache Wicket 6.14.0 released</h3>
    <small>20 Feb 2014</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.14.0! This release marks the fourteenth 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. New...
	<a href="/news/2014/02/20/wicket-6.14.0-released.html">more</a></p>
</article>
        <article>
	<h3 id="/news/2014/02/06/wicket-1.5.11-released.html">Wicket 1.5.11 released</h3>
    <small>06 Feb 2014</small>
	<p>This is the eleventh maintenance release of the Wicket 1.5.x series. This release brings over 34 bug fixes and improvements.
  Git tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket-core&lt;/artifactId&gt;
    &lt;version&gt;1.5.11&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2014/02/06/wicket-1.5.11-released.html">more</a></p>
</article>
        <article>
	<h3 id="/news/2014/02/06/wicket-1.4.23-released.html">Wicket 1.4.23 released</h3>
    <small>06 Feb 2014</small>
	<p>This is twenty thirdth release of the Wicket 1.4.x series. This is a security bugfix release on the 1.4.x branch.
Read CVE-2013-2055 for more information.
  Git tag
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket&lt;/artifactId&gt;
    &lt;version&gt;1.4.23&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2014/02/06/wicket-1.4.23-released.html">more</a></p>
</article>
        <article>
	<h3 id="/news/2014/02/06/cve-2013-2055.html">CVE-2013-2055 - Apache Wicket Information disclosure vulnerability</h3>
    <small>06 Feb 2014</small>
	<p>Severity: Important Vendor: The Apache Software Foundation Versions Affected: Apache Wicket 1.4.22, 1.5.10 and 6.7.0 Description: It is possible to make Wicket deliver the HTML templates in their raw/non-processed form. An attacker could see any sensitive information in the part of the HTML template that is usually ignored during rendering....
	<a href="/news/2014/02/06/cve-2013-2055.html">more</a></p>
</article>
        <article>
	<h3 id="/news/2014/01/05/wicket-6.13.0-released.html">Apache Wicket 6.13.0 released</h3>
    <small>05 Jan 2014</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.13.0! This release marks the thirteenth 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. New...
	<a href="/news/2014/01/05/wicket-6.13.0-released.html">more</a></p>
</article>
        <div class="l-first"></div>
        <hr />
        <div class="l-first">
          <h1 id="all-news-for-2013">All News for 2013</h1>
          <p>This section contains all news items published in <a href="/news/2013">2013</a>.</p>
          <article>
	<h3 id="/news/2013/11/01/wicket-6.12.0-released.html">Apache Wicket 6.12.0 released</h3>
    <small>01 Nov 2013</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.12.0! This release marks the twelfth 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. New...
	<a href="/news/2013/11/01/wicket-6.12.0-released.html">more</a></p>
</article>
          <article>
	<h3 id="/news/2013/09/20/wicket-6.11.0-released.html">Apache Wicket 6.11.0 released</h3>
    <small>20 Sep 2013</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.11.0! This release marks the eleventh 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. New...
	<a href="/news/2013/09/20/wicket-6.11.0-released.html">more</a></p>
</article>
          <article>
	<h3 id="/news/2013/08/18/wicket-6.10.0-released.html">Apache Wicket 6.10.0 released</h3>
    <small>18 Aug 2013</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.10.0! This release marks the tenth 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. New...
	<a href="/news/2013/08/18/wicket-6.10.0-released.html">more</a></p>
</article>
          <article>
	<h3 id="/news/2013/07/10/wicket-6.9.1-released.html">Apache Wicket 6.9.1 released</h3>
    <small>10 Jul 2013</small>
	<p>The Apache Wicket PMC announces Apache Wicket 6.9.1! This is a patch release for 6.9.0 where we inadvertently broke CDI injection into (amongst others) anonymous inner classes. See below for more information regarding this release. Please note that this patch release only fixes WICKET-5264. Starting with Wicket 6 we use...
	<a href="/news/2013/07/10/wicket-6.9.1-released.html">more</a></p>
</article>
          <article>
	<h3 id="/news/2013/06/27/wicket-6.9.0-released.html">Apache Wicket 6.9.0 released</h3>
    <small>27 Jun 2013</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.9.0! This release marks the ninth 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. New...
	<a href="/news/2013/06/27/wicket-6.9.0-released.html">more</a></p>
</article>
          <article>
	<h3 id="/news/2013/05/17/wicket-6.8.0-released.html">Apache Wicket 6.8.0 released</h3>
    <small>17 May 2013</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.8.0! This release marks the eighth 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. Using...
	<a href="/news/2013/05/17/wicket-6.8.0-released.html">more</a></p>
</article>
          <article>
	<h3 id="/news/2013/04/12/wicket-6.7.0-released.html">Apache Wicket 6.7.0 released</h3>
    <small>12 Apr 2013</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.7.0! This release marks the seventh 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. New...
	<a href="/news/2013/04/12/wicket-6.7.0-released.html">more</a></p>
</article>
          <article>
	<h3 id="/news/2013/03/03/cve-2012-5636.html">CVE-2012-5636 - Apache Wicket XSS vulnerability</h3>
    <small>03 Mar 2013</small>
	<p>Severity: Important Vendor: The Apache Software Foundation Versions Affected: Apache Wicket 1.4.x, 1.5.x and 1.6.x Description: It is possible for JavaScript statements to break out of a &lt;script&gt; tag in the rendered response. This might pose a security threat if the written JavaScript contains user provided data. This vulnerability is...
	<a href="/news/2013/03/03/cve-2012-5636.html">more</a></p>
</article>
          <article>
	<h3 id="/news/2013/02/26/wicket-1.5.10-released.html">Wicket 1.5.10 released</h3>
    <small>26 Feb 2013</small>
	<p>This is the tenth maintenance release of the Wicket 1.5.x series. This release brings over 28 bug fixes and improvements.
  Git tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket-core&lt;/artifactId&gt;
    &lt;version&gt;1.5.10&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2013/02/26/wicket-1.5.10-released.html">more</a></p>
</article>
          <article>
	<h3 id="/news/2013/02/15/wicket-6.6.0-released.html">Apache Wicket 6.6.0 released</h3>
    <small>15 Feb 2013</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.6.0! This release marks the sixth 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. New...
	<a href="/news/2013/02/15/wicket-6.6.0-released.html">more</a></p>
</article>
          <article>
	<h3 id="/news/2013/01/23/wicket-6.5.0-released.html">Apache Wicket 6.5.0 released</h3>
    <small>23 Jan 2013</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.5.0! This release marks the fifth 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. New...
	<a href="/news/2013/01/23/wicket-6.5.0-released.html">more</a></p>
</article>
          <div class="l-first"></div>
          <hr />
          <div class="l-first">
            <h1 id="all-news-for-2012">All News for 2012</h1>
            <p>This section contains all news items published in <a href="/news/2012">2012</a>.</p>
            <article>
	<h3 id="/news/2012/12/14/wicket-6.4.0-released.html">Apache Wicket 6.4.0 released</h3>
    <small>14 Dec 2012</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.4.0! This release marks the fourth 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. New...
	<a href="/news/2012/12/14/wicket-6.4.0-released.html">more</a></p>
</article>
            <article>
	<h3 id="/news/2012/11/16/wicket-6.3.0-released.html">Apache Wicket 6.3.0 released</h3>
    <small>16 Nov 2012</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.3.0! This release marks the third 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. New...
	<a href="/news/2012/11/16/wicket-6.3.0-released.html">more</a></p>
</article>
            <article>
	<h3 id="/news/2012/11/09/wicket-1.5.9-released.html">Wicket 1.5.9 released</h3>
    <small>09 Nov 2012</small>
	<p>This is the nineth maintenance release of the Wicket 1.5.x series. This release brings over 48 bug fixes and improvements.
  Git tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket-core&lt;/artifactId&gt;
    &lt;version&gt;1.5.9&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2012/11/09/wicket-1.5.9-released.html">more</a></p>
</article>
            <article>
	<h3 id="/news/2012/10/23/wicket-6.2.0-released.html">Apache Wicket 6.2.0 released</h3>
    <small>23 Oct 2012</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.2.0! This release marks the second 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. New...
	<a href="/news/2012/10/23/wicket-6.2.0-released.html">more</a></p>
</article>
            <article>
	<h3 id="/news/2012/10/08/wicket-6.1.1-released.html">Apache Wicket 6.1.1 released</h3>
    <small>08 Oct 2012</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.1.1! This release marks the first patch 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.1.0 and...
	<a href="/news/2012/10/08/wicket-6.1.1-released.html">more</a></p>
</article>
            <article>
	<h3 id="/news/2012/10/04/wicket-6.1.0-released.html">Apache Wicket 6.1.0 released</h3>
    <small>04 Oct 2012</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.1.0! This release marks the first maintenance 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. New...
	<a href="/news/2012/10/04/wicket-6.1.0-released.html">more</a></p>
</article>
            <article>
	<h3 id="/news/2012/09/06/cve-2012-3373.html">CVE-2012-3373 - Apache Wicket XSS vulnerability</h3>
    <small>06 Sep 2012</small>
	<p>Severity: Important Vendor: The Apache Software Foundation Versions Affected: Apache Wicket 1.4.x and 1.5.x Description: It is possible to inject JavaScript statements into an ajax link by adding an encoded null byte to a URL pointing to a Wicket app. This could be done by sending a legitimate user a...
	<a href="/news/2012/09/06/cve-2012-3373.html">more</a></p>
</article>
            <article>
	<h3 id="/news/2012/09/05/wicket-6.0.0-released.html">Apache Wicket v6.0.0 released</h3>
    <small>05 Sep 2012</small>
	<p>“With great pleasure we announce the availability of Apache Wicket 6.0.0” – Martijn Dashorst, Vice President, Apache Wicket Apache Wicket v6.0.0 is the 6th major release of the popular open source Java web framework. Numerous enhancements make Apache Wicket v6.0.0 a solid choice for web development: Out-of-the box JQuery integration...
	<a href="/news/2012/09/05/wicket-6.0.0-released.html">more</a></p>
</article>
            <article>
	<h3 id="/news/2012/09/05/wicket-1.4.21-released.html">Wicket 1.4.21 released</h3>
    <small>05 Sep 2012</small>
	<p>This is 21st release of the Wicket 1.4.x series. This is also the last release of the 1.4.x series, rounding up the remaining bugfixes. No further releases will happen in this branch. Git tag Changelog To use in Maven: &lt;dependency&gt; &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt; &lt;artifactId&gt;wicket&lt;/artifactId&gt; &lt;version&gt;1.4.21&lt;/version&gt; &lt;/dependency&gt; Download the full distribution (including source)...
	<a href="/news/2012/09/05/wicket-1.4.21-released.html">more</a></p>
</article>
            <article>
	<h3 id="/news/2012/08/24/wicket-1.5.8-released.html">Wicket 1.5.8 released</h3>
    <small>24 Aug 2012</small>
	<p>This is the eighth maintenance release of the Wicket 1.5.x series. This release brings over 45 bug fixes and improvements.
  Git tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket-core&lt;/artifactId&gt;
    &lt;version&gt;1.5.8&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2012/08/24/wicket-1.5.8-released.html">more</a></p>
</article>
            <article>
	<h3 id="/news/2012/07/16/wicket-6.0.0-beta3-released.html">Wicket 6.0.0-beta3 released</h3>
    <small>16 Jul 2012</small>
	<p>The Wicket team is proud to announce the third beta release of the Wicket 6.x series. This release is an intermediary release just before we give you 6.0.0 final. There are no more planned API breaks but if you find something that can be made better now it the time...
	<a href="/news/2012/07/16/wicket-6.0.0-beta3-released.html">more</a></p>
</article>
            <article>
	<h3 id="/news/2012/06/20/wicket-native-websockets.html">Wicket Native WebSockets support</h3>
    <small>20 Jun 2012</small>
	<p>A new experimental module just landed in Wicket’s Git repository - Wicket Native WebSocket. It provides the support for HTML5 WebSockets in Wicket as the one for Ajax that you may already use in your applications. The full documentation is available at Native WebSocket Wiki A demo application is available...
	<a href="/news/2012/06/20/wicket-native-websockets.html">more</a></p>
</article>
            <article>
	<h3 id="/news/2012/06/04/wicket-1.5.7-released.html">Wicket 1.5.7 released</h3>
    <small>04 Jun 2012</small>
	<p>This is the seventh maintenance release of the Wicket 1.5.x series. This release brings over 26 bug fixes and improvements.
  Git tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket-core&lt;/artifactId&gt;
    &lt;version&gt;1.5.7&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2012/06/04/wicket-1.5.7-released.html">more</a></p>
</article>
            <article>
	<h3 id="/news/2012/05/29/wicket-6.0.0-beta2-released.html">Wicket 6.0.0-beta2 released</h3>
    <small>29 May 2012</small>
	<p>The Wicket team is proud to announce the second beta release of the Wicket 6.x series. This release brings over many improvements over the 1.5.x series. New and Noteworthy Wicket Atmosphere The Beta 2 contains a new experimental module Wicket Atmosphere, which brings serverside push to Wicket and provides a...
	<a href="/news/2012/05/29/wicket-6.0.0-beta2-released.html">more</a></p>
</article>
            <article>
	<h3 id="/news/2012/05/07/wicket-1.5.6-released.html">Wicket 1.5.6 released</h3>
    <small>07 May 2012</small>
	<p>This is the sixth maintenance release of the Wicket 1.5.x series. This release brings over 40 bug fixes and improvements.
  Git tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket-core&lt;/artifactId&gt;
    &lt;version&gt;1.5.6&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2012/05/07/wicket-1.5.6-released.html">more</a></p>
</article>
            <article>
	<h3 id="/news/2012/03/26/wicket-6.0.0-beta1-released.html">Wicket 6.0.0-beta1 released</h3>
    <small>26 Mar 2012</small>
	<p>The Wicket team is proud to announce the first beta release of the Wicket 6.x series. This release brings over many improvements over the 1.5.x series. Check the roadmap with a list of the major goals. And the migration guide with all major and some minor changes between 1.5.x and...
	<a href="/news/2012/03/26/wicket-6.0.0-beta1-released.html">more</a></p>
</article>
            <article>
	<h3 id="/news/2012/03/22/wicket-cve-2012-1089.html">CVE-2012-1089 - Apache Wicket serving of hidden files vulnerability</h3>
    <small>22 Mar 2012</small>
	<p>Severity: Important Vendor: The Apache Software Foundation Versions Affected: Apache Wicket 1.4.x and 1.5.x Description: It is possible to view the content of any file of a web application by using an Url to a Wicket resource which resolves to a ‘null’ package. With such a Url the attacker can...
	<a href="/news/2012/03/22/wicket-cve-2012-1089.html">more</a></p>
</article>
            <article>
	<h3 id="/news/2012/03/22/wicket-cve-2012-0047.html">CVE-2012-0047 - Apache Wicket XSS vulnerability via pageMapName request parameter</h3>
    <small>22 Mar 2012</small>
	<p>Severity: Important Vendor: The Apache Software Foundation Versions Affected: Apache Wicket 1.4.x Apache Wicket 1.3.x and 1.5.x are not affected Description: A Cross Site Scripting (XSS) attack is possible by manipulating the value of ‘wicket:pageMapName’ request parameter. Mitigation: Upgrade to Apache Wicket 1.4.20 or Apache Wicket 1.5.5 Credit: This issue...
	<a href="/news/2012/03/22/wicket-cve-2012-0047.html">more</a></p>
</article>
            <article>
	<h3 id="/news/2012/03/12/wicket-1.5.5-released.html">Wicket 1.5.5 released</h3>
    <small>12 Mar 2012</small>
	<p>This is the fifth maintenance release of the Wicket 1.5.x series. This release brings over 50 bug fixes and improvements.
  Git tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket-core&lt;/artifactId&gt;
    &lt;version&gt;1.5.5&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2012/03/12/wicket-1.5.5-released.html">more</a></p>
</article>
            <article>
	<h3 id="/news/2012/03/12/wicket-1.4.20-released.html">Wicket 1.4.20 released</h3>
    <small>12 Mar 2012</small>
	<p>This is twentieth release of the Wicket 1.4.x series. This is primarily a minor bugfix release on the 1.4.x (stable) branch.
  Subversion tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket&lt;/artifactId&gt;
    &lt;version&gt;1.4.20&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2012/03/12/wicket-1.4.20-released.html">more</a></p>
</article>
            <article>
	<h3 id="/news/2012/01/23/wicket-1.5.4-released.html">Wicket 1.5.4 released</h3>
    <small>23 Jan 2012</small>
	<p>This is the fourth maintenance release of the Wicket 1.5.x series. This release brings over 68 bug fixes and improvements.
  Git tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket-core&lt;/artifactId&gt;
    &lt;version&gt;1.5.4&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2012/01/23/wicket-1.5.4-released.html">more</a></p>
</article>
            <div class="l-first"></div>
            <hr />
            <div class="l-first">
              <h1 id="all-news-for-2011">All News for 2011</h1>
              <p>This section contains all news items published in <a href="/news/2011">2011</a>.</p>
              <article>
	<h3 id="/news/2011/11/14/wicket-1.5.3-released.html">Wicket 1.5.3 released</h3>
    <small>14 Nov 2011</small>
	<p>This is the third maintenance release of the Wicket 1.5.x series. This release brings over 40 bug fixes and improvements.
  Subversion tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket-core&lt;/artifactId&gt;
    &lt;version&gt;1.5.3&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2011/11/14/wicket-1.5.3-released.html">more</a></p>
</article>
              <article>
	<h3 id="/news/2011/10/24/wicket-1.5.2-released.html">Wicket 1.5.2 released</h3>
    <small>24 Oct 2011</small>
	<p>This is the second maintenance release of the Wicket 1.5.x series. This release brings over 25 bug fixes and 5 improvements.
  Subversion tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket-core&lt;/artifactId&gt;
    &lt;version&gt;1.5.2&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2011/10/24/wicket-1.5.2-released.html">more</a></p>
</article>
              <article>
	<h3 id="/news/2011/10/17/wicket-1.4.19-released.html">Wicket 1.4.19 released</h3>
    <small>17 Oct 2011</small>
	<p>This is nineteenth release of the Wicket 1.4.x series. This is primarily a minor bugfix release on the 1.4.x (stable) branch.
  Subversion tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket&lt;/artifactId&gt;
    &lt;version&gt;1.4.19&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2011/10/17/wicket-1.4.19-released.html">more</a></p>
</article>
              <article>
	<h3 id="/news/2011/09/29/wicket-1.5.1-released.html">Wicket 1.5.1 released</h3>
    <small>29 Sep 2011</small>
	<p>This is the first maintenance release of the Wicket 1.5.x series. This release brings over 40 bug fixes and 15 improvements.
  Subversion tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket-core&lt;/artifactId&gt;
    &lt;version&gt;1.5.1&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2011/09/29/wicket-1.5.1-released.html">more</a></p>
</article>
              <article>
	<h3 id="/news/2011/09/07/wicket-1.5-released.html">Apache Wicket releases Wicket 1.5</h3>
    <small>07 Sep 2011</small>
	<p>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. Downloading Apache Wicket 1.5 You can download...
	<a href="/news/2011/09/07/wicket-1.5-released.html">more</a></p>
</article>
              <article>
	<h3 id="/news/2011/08/28/1.5-RC7-released.html">Wicket 1.5-RC7 released</h3>
    <small>28 Aug 2011</small>
	<p>The Wicket Team is proud to introduce the seventh Release Candidate in Wicket 1.5 series. See the changelog for the list of bug fixes and improvements done between 1.5-RC5.1 and 1.5-RC7 More detailed migration notes are available on our Migrate to 1.5 Wiki Page Release Artifacts: * Subversion tag *...
	<a href="/news/2011/08/28/1.5-RC7-released.html">more</a></p>
</article>
              <article>
	<h3 id="/news/2011/08/23/cve-2011-2712.html">CVE-2011-2712 - Apache Wicket XSS vulnerability</h3>
    <small>23 Aug 2011</small>
	<p>Severity: Important Vendor: The Apache Software Foundation Versions Affected: Apache Wicket 1.4.x Apache Wicket 1.3.x and 1.5-RCx are not affected Description: With multi window support application configuration and special query parameters it is possible to execute any kind of JavaScript on a site running with the affected versions. Mitigation: Either...
	<a href="/news/2011/08/23/cve-2011-2712.html">more</a></p>
</article>
              <article>
	<h3 id="/news/2011/08/09/wicket-1.4.18-released.html">Wicket 1.4.18 released</h3>
    <small>09 Aug 2011</small>
	<p>This is eightteenth release of the Wicket 1.4.x series. This is primarily a minor bugfix release on the 1.4.x (stable) branch.
  Subversion tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket&lt;/artifactId&gt;
    &lt;version&gt;1.4.18&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2011/08/09/wicket-1.4.18-released.html">more</a></p>
</article>
              <article>
	<h3 id="/news/2011/06/25/wicket-1.5-RC5.1-released.html">Wicket 1.5-RC5.1 released</h3>
    <small>25 Jun 2011</small>
	<p>The Wicket Team is proud to introduce the fourth Release Candidate in Wicket 1.5 series. See the changelog for the list of bug fixes and improvements done between 1.5-RC4.2 and 1.5-RC5.1 More detailed migration notes are available on our Migrate to 1.5 Wiki Page Release Artifacts: * Subversion tag *...
	<a href="/news/2011/06/25/wicket-1.5-RC5.1-released.html">more</a></p>
</article>
              <article>
	<h3 id="/news/2011/05/17/wicket-cookbook-contest.html">Apache Wicket Cookbook Giveaway Contest</h3>
    <small>17 May 2011</small>
	<p>
Packt Publishing has generously allowed me to
give away a free copy of the ebook version of Apache Wicket Cookbook (http://link.packtpub.com/AzN8N9), and a free one year subscription to PacktLib. For details see the contest announcement.
Cheers,
-Igor
	<a href="/news/2011/05/17/wicket-cookbook-contest.html">more</a></p>
</article>
              <article>
	<h3 id="/news/2011/05/11/wicket-1.5-RC4.2-released.html">Wicket 1.5-RC4.2 released</h3>
    <small>11 May 2011</small>
	<p>The Wicket Team is proud to introduce the fourth Release Candidate in Wicket 1.5 series. See the changelog for the list of bug fixes and improvements done between 1.5-RC3 and 1.5-RC4.2 More detailed migration notes are available on our Migrate to 1.5 Wiki Page Release Artifacts: * Subversion tag *...
	<a href="/news/2011/05/11/wicket-1.5-RC4.2-released.html">more</a></p>
</article>
              <article>
	<h3 id="/news/2011/04/02/wicket-1.5-RC3-released.html">Wicket 1.5-RC3 released</h3>
    <small>02 Apr 2011</small>
	<p>The Wicket Team is proud to introduce the third Release Candidate in Wicket 1.5 series. See the changelog for the list of bug fixes and improvements done between 1.5-rc2 and 1.5-RC3 More detailed migration notes are available on our Migrate to 1.5 Wiki Page Release Artifacts: * Subversion tag *...
	<a href="/news/2011/04/02/wicket-1.5-RC3-released.html">more</a></p>
</article>
              <article>
	<h3 id="/news/2011/04/02/wicket-1.4.17-released.html">Wicket 1.4.17 released</h3>
    <small>02 Apr 2011</small>
	<p>This is seventeenth release of the Wicket 1.4.x series. This is primarily a minor bugfix release on the 1.4.x (stable) branch.
  Subversion tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket&lt;/artifactId&gt;
    &lt;version&gt;1.4.17&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2011/04/02/wicket-1.4.17-released.html">more</a></p>
</article>
              <article>
	<h3 id="/news/2011/03/25/wicket-cookbook-published.html">Apache Wicket Cookbook Published!</h3>
    <small>25 Mar 2011</small>
	<p>For the past nine months I have been quietly working on a book about Wicket. Unlike other books on the market this one does not attempt to teach you Wicket from the ground up. Instead, it is for developers who already know the basics and want to learn how to...
	<a href="/news/2011/03/25/wicket-cookbook-published.html">more</a></p>
</article>
              <article>
	<h3 id="/news/2011/02/25/wicket-1.5-rc2-released.html">Wicket 1.5-rc2 released</h3>
    <small>25 Feb 2011</small>
	<p>The Wicket Team is proud to introduce the second Release Candidate in Wicket 1.5 series. See the changelog for the list of bug fixes and improvements done between 1.5-RC1 and 1.5-rc2 More detailed migration notes are available on our Migrate to 1.5 Wiki Page Release Artifacts: * Subversion tag *...
	<a href="/news/2011/02/25/wicket-1.5-rc2-released.html">more</a></p>
</article>
              <article>
	<h3 id="/news/2011/02/25/wicket-1.4.16-released.html">Wicket 1.4.16 released</h3>
    <small>25 Feb 2011</small>
	<p>This is sixteenth release of the Wicket 1.4.x series. This is primarily a minor bugfix release on the 1.4.x (stable) branch.
  Subversion tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket&lt;/artifactId&gt;
    &lt;version&gt;1.4.16&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2011/02/25/wicket-1.4.16-released.html">more</a></p>
</article>
              <article>
	<h3 id="/news/2011/01/22/wicket-1.5-RC1-released.html">Wicket 1.5-RC1 released</h3>
    <small>22 Jan 2011</small>
	<p>The Wicket Team is proud to introduce the first Release Candidate in Wicket 1.5 series. The 1.5 series provides the following major improvements: * A more powerful and flexible request processing pipeline * Intercomponent event mechanism * Improved configuration * More flexible markup loading * Better proxy support (x-forwarded-for header)...
	<a href="/news/2011/01/22/wicket-1.5-RC1-released.html">more</a></p>
</article>
              <div class="l-first"></div>
              <hr />
              <div class="l-first">
                <h1 id="all-news-for-2010">All News for 2010</h1>
                <p>This section contains all news items published in <a href="/news/2010">2010</a>.</p>
                <article>
	<h3 id="/news/2010/12/24/wicket-1.4.15-released.html">Wicket 1.4.15 released</h3>
    <small>24 Dec 2010</small>
	<p>This is fifteenth release of the Wicket 1.4.x series. This is primarily a minor bugfix release on the 1.4.x (stable) branch.
  Subversion tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket&lt;/artifactId&gt;
    &lt;version&gt;1.4.15&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2010/12/24/wicket-1.4.15-released.html">more</a></p>
</article>
                <article>
	<h3 id="/news/2010/11/29/wicket-1.4.14-released.html">Wicket 1.4.14 released</h3>
    <small>29 Nov 2010</small>
	<p>This is fourteenth release of the Wicket 1.4.x series. This is primarily a minor bugfix release on the 1.4.x (stable) branch.
  Subversion tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket&lt;/artifactId&gt;
    &lt;version&gt;1.4.14&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2010/11/29/wicket-1.4.14-released.html">more</a></p>
</article>
                <article>
	<h3 id="/news/2010/11/21/pedro-santos-committer.html">Pedro Santos is a Wicket team member</h3>
    <small>21 Nov 2010</small>
	<p>Pedro Santos has been added as a committer and PMC member for Apache Wicket. Pedro has been increasingly active in the Wicket community in recent months, and his patches continue to improve in quality. Additionally, Pedro is always willing to do the “grunt work” of creating great test cases for...
	<a href="/news/2010/11/21/pedro-santos-committer.html">more</a></p>
</article>
                <article>
	<h3 id="/news/2010/11/05/wicket-1.5-M3-released.html">Wicket 1.5-M3 released</h3>
    <small>05 Nov 2010</small>
	<p>This is another milestone release from trunk (in-development branch).  This release includes several enhancments and fixes, which can be seen in the changelog (linked below).
  Subversion tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket&lt;/artifactId&gt;
    &lt;version&gt;1.5-M3&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2010/11/05/wicket-1.5-M3-released.html">more</a></p>
</article>
                <article>
	<h3 id="/news/2010/11/01/wicket-1.4.13-released.html">Wicket 1.4.13 released</h3>
    <small>01 Nov 2010</small>
	<p>This is thirteenth release of the Wicket 1.4.x series. This is primarily a minor bugfix release on the 1.4.x (stable) branch.
  Subversion tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket&lt;/artifactId&gt;
    &lt;version&gt;1.4.13&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2010/11/01/wicket-1.4.13-released.html">more</a></p>
</article>
                <article>
	<h3 id="/news/2010/09/17/wicket.1.5-M2.1-released.html">Wicket 1.5-M2.1 released</h3>
    <small>17 Sep 2010</small>
	<p>This is the second milestone of the new 1.5.x Wicket series. The focus of 1.5.x is to provide our users with a more powerful and flexible request processing pipeline. This release is NOT production-ready, it is more of a technology demo that should facilitate user-feedback we can fold into the...
	<a href="/news/2010/09/17/wicket.1.5-M2.1-released.html">more</a></p>
</article>
                <article>
	<h3 id="/news/2010/09/17/wicket.1.4.12-released.html">Wicket 1.4.12 released</h3>
    <small>17 Sep 2010</small>
	<p>This is the twelfth maintenance release of the 1.4.x series. This release brings a fix to a critical bug which prevented ajax form submits in FireFox.
  Subversion tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket&lt;/artifactId&gt;
    &lt;version&gt;1.4.12&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2010/09/17/wicket.1.4.12-released.html">more</a></p>
</article>
                <article>
	<h3 id="/news/2010/09/09/wicket-1.4.11-released.html">Wicket 1.4.11 released</h3>
    <small>09 Sep 2010</small>
	<p>This is the eleventh maintenance release of the 1.4.x series and brings over
fifty bug fixes and improvements.
  Subversion tag
  Changelog
  To use in Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket&lt;/artifactId&gt;
    &lt;version&gt;1.4.11&lt;/version&gt;
&lt;/dependency&gt;
  Download the full distribution (including source)
	<a href="/news/2010/09/09/wicket-1.4.11-released.html">more</a></p>
</article>
                <article>
	<h3 id="/news/2010/08/24/peter-ertl-committer.html">Peter Ertl is a Wicket team member</h3>
    <small>24 Aug 2010</small>
	<p>The Apache Wicket team is proud to have Peter Ertl as a new member to the team of developers. Peter has been active in our community for a long time now and has contributed many patches, reported many bugs as well as helping out on the user list. Welcome Peter!...
	<a href="/news/2010/08/24/peter-ertl-committer.html">more</a></p>
</article>
                <article>
	<h3 id="/news/2010/08/11/wicket-1.5-M1-released.html">Wicket 1.5-M1 released</h3>
    <small>11 Aug 2010</small>
	<p>This is the first milestone of the new 1.5.x Wicket series. The focus of 1.5.x is to provide our users with a more powerful and flexible request processing pipeline. This release is NOT production-ready, it is more of a technology demo that should facilitate user-feedback we can fold into the...
	<a href="/news/2010/08/11/wicket-1.5-M1-released.html">more</a></p>
</article>
                <article>
	<h3 id="/news/2010/08/11/wicket-1.4.10-released.html">Wicket 1.4.10 released</h3>
    <small>11 Aug 2010</small>
	<p>This is the tenth maintenance release of the 1.4.x series and brings over thirty bug fixes and improvements. As well as bringing bug fixes and small improvements, 1.4.10 brings two major new features: * Delayed component initialization * Component configuration Delayed component initialization allows developers to initialize their components outside...
	<a href="/news/2010/08/11/wicket-1.4.10-released.html">more</a></p>
</article>
                <article>
	<h3 id="/news/2010/08/04/martin-grigorov-committer.html">Martin Grigorov is a Wicket team member</h3>
    <small>04 Aug 2010</small>
	<p>The Apache Wicket team is proud to have Martin Grigorov as a new member to the team of developers. Martin has provided many high quality patches and didn’t just pick the easy bugs either. He’s also very active on the user list and contributes to several Wicket Stuff projects. Welcome...
	<a href="/news/2010/08/04/martin-grigorov-committer.html">more</a></p>
</article>
                <article>
	<h3 id="/news/2010/05/24/wicket-1.4.9-released.html">Wicket 1.4.9 released</h3>
    <small>24 May 2010</small>
	<p>This is the ninth maintenance release of the 1.4.x series and brings over fifteen bug fixes and improvements. Subversion tag Changelog To use in Maven: &lt;dependency&gt; &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt; &lt;artifactId&gt;wicket&lt;/artifactId&gt; &lt;version&gt;1.4.9&lt;/version&gt; &lt;/dependency&gt; Download the full distribution (including source) It is worth noting that WICKET-2846 will be reverted in the next release because...
	<a href="/news/2010/05/24/wicket-1.4.9-released.html">more</a></p>
</article>
                <article>
	<h3 id="/news/2010/05/03/wicket-1.4.8-released.html">Wicket 1.4.8 released</h3>
    <small>03 May 2010</small>
	<p>Wicket 1.4.8 is released!
This is the eighth maintenance release of 1.4.x series and brings over
20 bug fixes and improvements.
  SVN tag
  Using Maven:
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket&lt;/artifactId&gt;
    &lt;version&gt;1.4.8&lt;/version&gt;
&lt;/dependency&gt;
  Download
  Change log
	<a href="/news/2010/05/03/wicket-1.4.8-released.html">more</a></p>
</article>
                <article>
	<h3 id="/news/2010/03/05/wicket-1.4.7-released.html">Wicket 1.4.7 released</h3>
    <small>05 Mar 2010</small>
	<p>The Apache Wicket project is proud to announce the seventh maintenance release of Apache Wicket 1.4. This releases brings over 30 improvements and bug fixes. Download Apache Wicket 1.4.7 You can download the release here: http://www.apache.org/dyn/closer.cgi/wicket/1.4.7 Or use this in your Maven pom’s to upgrade to the new version: &lt;dependency&gt;...
	<a href="/news/2010/03/05/wicket-1.4.7-released.html">more</a></p>
</article>
                <article>
	<h3 id="/news/2010/02/01/wicket-1.4.6-released.html">Wicket 1.4.6 released</h3>
    <small>01 Feb 2010</small>
	<p>The Apache Wicket project is proud to announce the sixths maintenance release of Apache Wicket 1.4. This releases brings over 40 improvements and bug fixes that make Wicket 1.4 even more stable in production environments. Download Apache Wicket 1.4.6 You can download the release here: http://www.apache.org/dyn/closer.cgi/wicket/1.4.6 Or use this in...
	<a href="/news/2010/02/01/wicket-1.4.6-released.html">more</a></p>
</article>
                <div class="l-first"></div>
                <hr />
                <div class="l-first">
                  <h1 id="all-news-for-2009">All News for 2009</h1>
                  <p>This section contains all news items published in <a href="/news/2009">2009</a>.</p>
                  <article>
	<h3 id="/news/2009/12/21/wicket-1.4.5-released.html">Wicket 1.4.5 released</h3>
    <small>21 Dec 2009</small>
	<p>The Apache Wicket project is proud to announce the fifth maintenance release of Apache Wicket 1.4. This releases mainly fixes WICKET-2613 which has caused certain applications to stop functioning properly in production environments. Download Apache Wicket 1.4 You can download the release here: http://www.apache.org/dyn/closer.cgi/wicket/1.4.5 Or use this in your Maven...
	<a href="/news/2009/12/21/wicket-1.4.5-released.html">more</a></p>
</article>
                  <article>
	<h3 id="/news/2009/12/13/wicket-1.4.4-released.html">Wicket 1.4.4 released</h3>
    <small>13 Dec 2009</small>
	<p>The Apache Wicket project is proud to announce the fourth maintenance release of Apache Wicket 1.4. Download Apache Wicket 1.4.4 You can download the release here: http://www.apache.org/dyn/closer.cgi/wicket/1.4.4 Or use this in your Maven pom’s to upgrade to the new version: &lt;dependency&gt; &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt; &lt;artifactId&gt;wicket&lt;/artifactId&gt; &lt;version&gt;1.4.4&lt;/version&gt; &lt;/dependency&gt; Changes A complete list of...
	<a href="/news/2009/12/13/wicket-1.4.4-released.html">more</a></p>
</article>
                  <article>
	<h3 id="/news/2009/10/24/wicket-1.4.3-released.html">Wicket 1.4.3 released</h3>
    <small>24 Oct 2009</small>
	<p>The Apache Wicket project is proud to announce the third maintenance release of Apache Wicket 1.4. Download Apache Wicket 1.4.3 You can download the release here: http://www.apache.org/dyn/closer.cgi/wicket/1.4.3 Or use this in your Maven pom’s to upgrade to the new version: &lt;dependency&gt; &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt; &lt;artifactId&gt;wicket&lt;/artifactId&gt; &lt;version&gt;1.4.3&lt;/version&gt; &lt;/dependency&gt; Changes A complete list of...
	<a href="/news/2009/10/24/wicket-1.4.3-released.html">more</a></p>
</article>
                  <article>
	<h3 id="/news/2009/10/12/wicket-1.4.2-released.html">Wicket 1.4.2 released</h3>
    <small>12 Oct 2009</small>
	<p>The Apache Wicket project is proud to announce the second maintenance release of Apache Wicket 1.4. Download Apache Wicket 1.4.2 You can download the release here: http://www.apache.org/dyn/closer.cgi/wicket/1.4.2 Or use this in your Maven pom’s to upgrade to the new version: &lt;dependency&gt; &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt; &lt;artifactId&gt;wicket&lt;/artifactId&gt; &lt;version&gt;1.4.2&lt;/version&gt; &lt;/dependency&gt; Changes A complete list of...
	<a href="/news/2009/10/12/wicket-1.4.2-released.html">more</a></p>
</article>
                  <article>
	<h3 id="/news/2009/08/21/wicket-1.4.1-released.html">Wicket 1.4.1 released</h3>
    <small>21 Aug 2009</small>
	<p>The Apache Wicket project is proud to announce the first maintenance release of Apache Wicket 1.4. Download Apache Wicket 1.4 You can download the release here: http://www.apache.org/dyn/closer.cgi/wicket/1.4.1 Or use this in your Maven pom’s to upgrade to the new version: &lt;dependency&gt; &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt; &lt;artifactId&gt;wicket&lt;/artifactId&gt; &lt;version&gt;1.4.1&lt;/version&gt; &lt;/dependency&gt; Changes The most notable change...
	<a href="/news/2009/08/21/wicket-1.4.1-released.html">more</a></p>
</article>
                  <article>
	<h3 id="/news/2009/07/30/wicket-1.4-takes-typesafety-to-the-next-level.html">Apache Wicket 1.4 takes typesafety to the next level</h3>
    <small>30 Jul 2009</small>
	<p>The Apache Wicket project is proud to announce the release of Apache Wicket 1.4. Apache Wicket is an open source, component oriented Java web application framework. With overwhelming support from the user community, this release marks a departure from the past where we leave Java 1.4 behind and we require...
	<a href="/news/2009/07/30/wicket-1.4-takes-typesafety-to-the-next-level.html">more</a></p>
</article>
                  <article>
	<h3 id="/news/2009/07/30/wicket-1.3.7-released.html">Apache Wicket 1.3.7 marks end of life for Wicket 1.3</h3>
    <small>30 Jul 2009</small>
	<p>The Apache Wicket team is proud to present the release of Apache Wicket 1.3.7. This will be the last feature release for the 1.3.x branch. Going forward, only security fixes will be released in the 1.3.x branch - meaning that 1.3.7 may be the last release in this branch. All...
	<a href="/news/2009/07/30/wicket-1.3.7-released.html">more</a></p>
</article>
                  <div class="l-first"></div>
                  <hr />
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
        </div>
        <div class="l-one-third">
            <h2>2017</h2>
            <ul>
            <li><a href="/news/2017">All of 2017</a></li>
            <li><a href="/news/2017/08">August</a></li>
            <li><a href="/news/2017/07">July</a></li>
            <li><a href="/news/2017/05">May</a></li>
            <li><a href="/news/2017/03">March</a></li>
            <li><a href="/news/2017/02">February</a></li>
            </ul>
            <h2>2016</h2>
            <ul>
            <li><a href="/news/2016">All of 2016</a></li>
            <li><a href="/news/2016/12">December</a></li>
            <li><a href="/news/2016/11">November</a></li>
            <li><a href="/news/2016/10">October</a></li>
            <li><a href="/news/2016/08">August</a></li>
            <li><a href="/news/2016/07">July</a></li>
            <li><a href="/news/2016/05">May</a></li>
            <li><a href="/news/2016/03">March</a></li>
            <li><a href="/news/2016/02">February</a></li>
            <li><a href="/news/2016/01">January</a></li>
            </ul>
            <h2>2015</h2>
            <ul>
            <li><a href="/news/2015">All of 2015</a></li>
            <li><a href="/news/2015/11">November</a></li>
            <li><a href="/news/2015/10">October</a></li>
            <li><a href="/news/2015/07">July</a></li>
            <li><a href="/news/2015/06">June</a></li>
            <li><a href="/news/2015/02">February</a></li>
            </ul>
            <h2>2014</h2>
            <ul>
            <li><a href="/news/2014">All of 2014</a></li>
            <li><a href="/news/2014/11">November</a></li>
            <li><a href="/news/2014/09">September</a></li>
            <li><a href="/news/2014/08">August</a></li>
            <li><a href="/news/2014/06">June</a></li>
            <li><a href="/news/2014/04">April</a></li>
            <li><a href="/news/2014/02">February</a></li>
            <li><a href="/news/2014/01">January</a></li>
            </ul>
            <h2>2013</h2>
            <ul>
            <li><a href="/news/2013">All of 2013</a></li>
            <li><a href="/news/2013/11">November</a></li>
            <li><a href="/news/2013/09">September</a></li>
            <li><a href="/news/2013/08">August</a></li>
            <li><a href="/news/2013/07">July</a></li>
            <li><a href="/news/2013/06">June</a></li>
            <li><a href="/news/2013/05">May</a></li>
            <li><a href="/news/2013/04">April</a></li>
            <li><a href="/news/2013/03">March</a></li>
            <li><a href="/news/2013/02">February</a></li>
            <li><a href="/news/2013/01">January</a></li>
            </ul>
            <h2>2012</h2>
            <ul>
            <li><a href="/news/2012">All of 2012</a></li>
            <li><a href="/news/2012/12">December</a></li>
            <li><a href="/news/2012/11">November</a></li>
            <li><a href="/news/2012/10">October</a></li>
            <li><a href="/news/2012/09">September</a></li>
            <li><a href="/news/2012/08">August</a></li>
            <li><a href="/news/2012/07">July</a></li>
            <li><a href="/news/2012/06">June</a></li>
            <li><a href="/news/2012/05">May</a></li>
            <li><a href="/news/2012/03">March</a></li>
            <li><a href="/news/2012/01">January</a></li>
            </ul>
            <h2>2011</h2>
            <ul>
            <li><a href="/news/2011">All of 2011</a></li>
            <li><a href="/news/2011/11">November</a></li>
            <li><a href="/news/2011/10">October</a></li>
            <li><a href="/news/2011/09">September</a></li>
            <li><a href="/news/2011/08">August</a></li>
            <li><a href="/news/2011/06">June</a></li>
            <li><a href="/news/2011/05">May</a></li>
            <li><a href="/news/2011/04">April</a></li>
            <li><a href="/news/2011/03">March</a></li>
            <li><a href="/news/2011/02">February</a></li>
            <li><a href="/news/2011/01">January</a></li>
            </ul>
            <h2>2010</h2>
            <ul>
            <li><a href="/news/2010">All of 2010</a></li>
            <li><a href="/news/2010/12">December</a></li>
            <li><a href="/news/2010/11">November</a></li>
            <li><a href="/news/2010/09">September</a></li>
            <li><a href="/news/2010/08">August</a></li>
            <li><a href="/news/2010/05">May</a></li>
            <li><a href="/news/2010/03">March</a></li>
            <li><a href="/news/2010/02">February</a></li>
            </ul>
            <h2>2009</h2>
            <ul>
            <li><a href="/news/2009">All of 2009</a></li>
            <li><a href="/news/2009/12">December</a></li>
            <li><a href="/news/2009/10">October</a></li>
            <li><a href="/news/2009/08">August</a></li>
            <li><a href="/news/2009/07">July</a></li>
            </ul>
        </div>
    </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 © 2017 — 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>
