<!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.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-container">
        
<nav class="mainmenu">
    <div class="nav-logo">
    <a href="/"><img src="/img/logo-apachewicket.svg" alt="Apache Wicket"></a>
</div>

    <div class="nav-container">
    
		
    	
        
        
		<!-- /start/quickstart.html || /news/ -->
		
    	
        
    	<a href="/start/quickstart.html" class=" nav-items">Quick Start</a>
    
		
    	
        
        
		<!-- /start/download.html || /news/ -->
		
    	
        
    	<a href="/start/download.html" class=" nav-items">Download</a>
    
		
    	
        
        
		<!-- /learn || /news/ -->
		
    	
        
    	<a href="/learn" class=" nav-items">Documentation</a>
    
		
    	
        
        
		<!-- /help || /news/ -->
		
    	
        
    	<a href="/help" class=" nav-items">Support</a>
    
		
    	
        
        
		<!-- /contribute || /news/ -->
		
    	
        
    	<a href="/contribute" class=" nav-items">Contribute</a>
    
		
    	
        
        
		<!-- /community || /news/ -->
		
    	
        
    	<a href="/community" class=" nav-items">Community</a>
    
		
    	
        
        
		<!-- /apache || /news/ -->
		
    	
        
    	<a href="/apache" class=" nav-items">Apache</a>
    
    </div>
    <div class="nav-container  ">
        <a href="https://github.com/apache/wicket" target="_blank"><i class="fa fa-github nav-items"></i></a>
        <a href="https://twitter.com/apache_wicket" target="_blank"><i class="fa fa-twitter nav-items"></i></a>
        <a href="https://builtwithwicket.tumblr.com" target="_blank"><i class="fa fa-tumblr nav-items"></i></a>
    </div>    
</nav>
        
    </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-flex"> 
	        <div class="l-two-third">
	        
<div class="l-first">

  <h1 id="all-news-for-2020">All News for 2020</h1>

  <p>This section contains all news items published in <a href="/news/2020">2020</a>.</p>

  <article>
	<h3 id="/news/2020/11/23/wicket-8.11.0-released.html">Apache Wicket 8.11.0 released</h3>
    <small>23 Nov 2020</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.11.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/2020/11/23/wicket-8.11.0-released.html">more</a></p>
</article>

  <article>
	<h3 id="/news/2020/11/19/wicket-9.2.0-released.html">Apache Wicket 9.2.0 released</h3>
    <small>19 Nov 2020</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 9.2.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/2020/11/19/wicket-9.2.0-released.html">more</a></p>
</article>

  <article>
	<h3 id="/news/2020/10/11/wicket-9.1.0-released.html">Apache Wicket 9.1.0 released</h3>
    <small>11 Oct 2020</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 9.1.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/2020/10/11/wicket-9.1.0-released.html">more</a></p>
</article>

  <article>
	<h3 id="/news/2020/09/07/wicket-8.10.0-released.html">Apache Wicket 8.10.0 released</h3>
    <small>07 Sep 2020</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.10.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/2020/09/07/wicket-8.10.0-released.html">more</a></p>
</article>

  <article>
	<h3 id="/news/2020/07/20/wicket-7.17.0-released.html">Apache Wicket 7.17.0 released</h3>
    <small>20 Jul 2020</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 7.17.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/2020/07/20/wicket-7.17.0-released.html">more</a></p>
</article>

  <article>
	<h3 id="/news/2020/07/15/wicket-9-released.html">Announcing Apache Wicket 9: get into the modern Java world!</h3>
    <small>15 Jul 2020</small>
	<p>The Apache Wicket project announces the 9th major release of the open source Java web framework servicing websites and applications across the globe since 2004. Built on top of Java 11, this version of Wicket brings web development into the modern Java world, offering a fundamental tool to keep you...
	<a href="/news/2020/07/15/wicket-9-released.html">more</a></p>
</article>

  <article>
	<h3 id="/news/2020/07/15/wicket-8.9.0-released.html">Apache Wicket 8.9.0 released</h3>
    <small>15 Jul 2020</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.9.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/2020/07/15/wicket-8.9.0-released.html">more</a></p>
</article>

  <article>
	<h3 id="/news/2020/04/24/wicket-8.8.0-released.html">Apache Wicket 8.8.0 released</h3>
    <small>24 Apr 2020</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.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/2020/04/24/wicket-8.8.0-released.html">more</a></p>
</article>

  <article>
	<h3 id="/news/2020/04/06/wicket-9.0.0-M5-released.html">Apache Wicket 9.0.0-M5 released</h3>
    <small>06 Apr 2020</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 9.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/2020/04/06/wicket-9.0.0-M5-released.html">more</a></p>
</article>

  <article>
	<h3 id="/news/2020/01/09/wicket-9.0.0-M4-released.html">Apache Wicket 9.0.0-M4 released</h3>
    <small>09 Jan 2020</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 9.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/2020/01/09/wicket-9.0.0-M4-released.html">more</a></p>
</article>

  <article>
	<h3 id="/news/2020/01/08/wicket-7.16.0-released.html">Apache Wicket 7.16.0 released</h3>
    <small>08 Jan 2020</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 7.16.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/2020/01/08/wicket-7.16.0-released.html">more</a></p>
</article>

  <article>
	<h3 id="/news/2020/01/07/wicket-8.7.0-released.html">Apache Wicket 8.7.0 released</h3>
    <small>07 Jan 2020</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.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/2020/01/07/wicket-8.7.0-released.html">more</a></p>
</article>

  <div class="l-first"></div>
  <hr />

  <div class="l-first">

    <h1 id="all-news-for-2019">All News for 2019</h1>

    <p>This section contains all news items published in <a href="/news/2019">2019</a>.</p>

    <article>
	<h3 id="/news/2019/09/16/wicket-9.0.0-M3-released.html">Apache Wicket 9.0.0-M3 released</h3>
    <small>16 Sep 2019</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 9.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/2019/09/16/wicket-9.0.0-M3-released.html">more</a></p>
</article>

    <article>
	<h3 id="/news/2019/09/13/wicket-8.6.1-released.html">Apache Wicket 8.6.1 released</h3>
    <small>13 Sep 2019</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.6.1! 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/2019/09/13/wicket-8.6.1-released.html">more</a></p>
</article>

    <article>
	<h3 id="/news/2019/09/07/wicket-8.6.0-released.html">Apache Wicket 8.6.0 released</h3>
    <small>07 Sep 2019</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.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/2019/09/07/wicket-8.6.0-released.html">more</a></p>
</article>

    <article>
	<h3 id="/news/2019/09/07/wicket-7.15.0-released.html">Apache Wicket 7.15.0 released</h3>
    <small>07 Sep 2019</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 7.15.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/2019/09/07/wicket-7.15.0-released.html">more</a></p>
</article>

    <article>
	<h3 id="/news/2019/06/02/wicket-9.0.0-M2-released.html">Apache Wicket 9.0.0-M2 released</h3>
    <small>02 Jun 2019</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 9.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/2019/06/02/wicket-9.0.0-M2-released.html">more</a></p>
</article>

    <article>
	<h3 id="/news/2019/05/28/wicket-8.5.0-released.html">Apache Wicket 8.5.0 released</h3>
    <small>28 May 2019</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.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/2019/05/28/wicket-8.5.0-released.html">more</a></p>
</article>

    <article>
	<h3 id="/news/2019/05/28/wicket-7.14.0-released.html">Apache Wicket 7.14.0 released</h3>
    <small>28 May 2019</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 7.14.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/2019/05/28/wicket-7.14.0-released.html">more</a></p>
</article>

    <article>
	<h3 id="/news/2019/04/15/wicket-9.0.0-M1-released.html">Apache Wicket 9.0.0-M1 released</h3>
    <small>15 Apr 2019</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 9.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/2019/04/15/wicket-9.0.0-M1-released.html">more</a></p>
</article>

    <article>
	<h3 id="/news/2019/04/06/wicket-7.13.0-released.html">Apache Wicket 7.13.0 released</h3>
    <small>06 Apr 2019</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 7.13.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/2019/04/06/wicket-7.13.0-released.html">more</a></p>
</article>

    <article>
	<h3 id="/news/2019/04/05/wicket-8.4.0-released.html">Apache Wicket 8.4.0 released</h3>
    <small>05 Apr 2019</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.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/2019/04/05/wicket-8.4.0-released.html">more</a></p>
</article>

    <article>
	<h3 id="/news/2019/02/06/wicket-7.12.0-released.html">Apache Wicket 7.12.0 released</h3>
    <small>06 Feb 2019</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 7.12.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/2019/02/06/wicket-7.12.0-released.html">more</a></p>
</article>

    <article>
	<h3 id="/news/2019/01/30/wicket-8.3.0-released.html">Apache Wicket 8.3.0 released</h3>
    <small>30 Jan 2019</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.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/2019/01/30/wicket-8.3.0-released.html">more</a></p>
</article>

    <div class="l-first"></div>
    <hr />

    <div class="l-first">

      <h1 id="all-news-for-2018">All News for 2018</h1>

      <p>This section contains all news items published in <a href="/news/2018">2018</a>.</p>

      <article>
	<h3 id="/news/2018/12/10/wicket-6.30.0-released.html">Apache Wicket 6.30.0 released</h3>
    <small>10 Dec 2018</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.30.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/2018/12/10/wicket-6.30.0-released.html">more</a></p>
</article>

      <article>
	<h3 id="/news/2018/12/01/wicket-7.11.0-released.html">Apache Wicket 7.11.0 released</h3>
    <small>01 Dec 2018</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 7.11.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/2018/12/01/wicket-7.11.0-released.html">more</a></p>
</article>

      <article>
	<h3 id="/news/2018/11/17/wicket-8.2.0-released.html">Apache Wicket 8.2.0 released</h3>
    <small>17 Nov 2018</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.2.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/2018/11/17/wicket-8.2.0-released.html">more</a></p>
</article>

      <article>
	<h3 id="/news/2018/09/15/wicket-8.1.0-released.html">Apache Wicket 8.1.0 released</h3>
    <small>15 Sep 2018</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.1.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/2018/09/15/wicket-8.1.0-released.html">more</a></p>
</article>

      <article>
	<h3 id="/news/2018/05/22/wicket-8-released.html">Announcing Apache Wicket 8: Write Less, Achieve More</h3>
    <small>22 May 2018</small>
	<p>The Apache Wicket project announces the 8th major release of the open source Java web framework servicing websites and applications across the globe for over a decade. With this release Wicket embraces Java 8 idioms fully, allowing the use of lambda expressions in all the right places. With Wicket 8...
	<a href="/news/2018/05/22/wicket-8-released.html">more</a></p>
</article>

      <article>
	<h3 id="/news/2018/02/21/wicket-6.29.0-released.html">Apache Wicket 6.29.0 released</h3>
    <small>21 Feb 2018</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.29.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/2018/02/21/wicket-6.29.0-released.html">more</a></p>
</article>

      <article>
	<h3 id="/news/2018/02/17/wicket-8.0.0-M9-released.html">Apache Wicket 8.0.0-M9 released</h3>
    <small>17 Feb 2018</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.0.0-M9! 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/2018/02/17/wicket-8.0.0-M9-released.html">more</a></p>
</article>

      <article>
	<h3 id="/news/2018/02/15/wicket-7.10.0-released.html">Apache Wicket 7.10.0 released</h3>
    <small>15 Feb 2018</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 7.10.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/2018/02/15/wicket-7.10.0-released.html">more</a></p>
</article>

      <div class="l-first"></div>
      <hr />

      <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/10/25/wicket-8.0.0-M8-released.html">Apache Wicket 8.0.0-M8 released</h3>
    <small>25 Oct 2017</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.0.0-M8! 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/10/25/wicket-8.0.0-M8-released.html">more</a></p>
</article>

        <article>
	<h3 id="/news/2017/10/01/wicket-6.28.0-released.html">Apache Wicket 6.28.0 released</h3>
    <small>01 Oct 2017</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 6.28.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/10/01/wicket-6.28.0-released.html">more</a></p>
</article>

        <article>
	<h3 id="/news/2017/09/19/wicket-7.9.0-released.html">Apache Wicket 7.9.0 released</h3>
    <small>19 Sep 2017</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 7.9.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/09/19/wicket-7.9.0-released.html">more</a></p>
</article>

        <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 not be...
	<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 Changelog RC6...
	<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 Changelog To...
	<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 Changelog To...
	<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 Changelog To...
	<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 Changelog To...
	<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) More detailed migration notes are...
	<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 of a...
	<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>
</div>

	        </div>
	        <div class="l-one-third">
	        
	            
	            <h2>2020</h2>
	            <ul>
	            <li><a href="/news/2020">All of 2020</a></li>
	            
	            <li><a href="/news/2020/11">November</a></li>
	            
	            <li><a href="/news/2020/10">October</a></li>
	            
	            <li><a href="/news/2020/09">September</a></li>
	            
	            <li><a href="/news/2020/07">July</a></li>
	            
	            <li><a href="/news/2020/04">April</a></li>
	            
	            <li><a href="/news/2020/01">January</a></li>
	            
	            </ul>
	        
	            
	            <h2>2019</h2>
	            <ul>
	            <li><a href="/news/2019">All of 2019</a></li>
	            
	            <li><a href="/news/2019/09">September</a></li>
	            
	            <li><a href="/news/2019/06">June</a></li>
	            
	            <li><a href="/news/2019/05">May</a></li>
	            
	            <li><a href="/news/2019/04">April</a></li>
	            
	            <li><a href="/news/2019/02">February</a></li>
	            
	            <li><a href="/news/2019/01">January</a></li>
	            
	            </ul>
	        
	            
	            <h2>2018</h2>
	            <ul>
	            <li><a href="/news/2018">All of 2018</a></li>
	            
	            <li><a href="/news/2018/12">December</a></li>
	            
	            <li><a href="/news/2018/11">November</a></li>
	            
	            <li><a href="/news/2018/09">September</a></li>
	            
	            <li><a href="/news/2018/05">May</a></li>
	            
	            <li><a href="/news/2018/02">February</a></li>
	            
	            </ul>
	        
	            
	            <h2>2017</h2>
	            <ul>
	            <li><a href="/news/2017">All of 2017</a></li>
	            
	            <li><a href="/news/2017/10">October</a></li>
	            
	            <li><a href="/news/2017/09">September</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>
    </div>
</main>

        <footer>
            <div class="l-container">
    <div class="left">
        <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>
</div>
        </footer>
    </body>
</html>
