<!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-2022">All News for 2022</h1>

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

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

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

  <article>
	<h3 id="/news/2022/03/30/wicket-9.9.0-released.html">Apache Wicket 9.9.0 released</h3>
    <small>30 Mar 2022</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 9.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/2022/03/30/wicket-9.9.0-released.html">more</a></p>
</article>

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

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

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

  <div class="l-first">

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

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

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

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

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

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

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

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

    <article>
	<h3 id="/news/2021/03/31/wicket-8.12.0-released.html">Apache Wicket 8.12.0 released</h3>
    <small>31 Mar 2021</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 8.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/2021/03/31/wicket-8.12.0-released.html">more</a></p>
</article>

    <article>
	<h3 id="/news/2021/03/30/wicket-9.3.0-released.html">Apache Wicket 9.3.0 released</h3>
    <small>30 Mar 2021</small>
	<p>The Apache Wicket PMC is proud to announce Apache Wicket 9.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/2021/03/30/wicket-9.3.0-released.html">more</a></p>
</article>

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

    <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>

	        </div>
	        <div class="l-one-third">
	        
	            
	            <h2>2022</h2>
	            <ul>
	            <li><a href="/news/2022">All of 2022</a></li>
	            
	            <li><a href="/news/2022/05">May</a></li>
	            
	            <li><a href="/news/2022/04">April</a></li>
	            
	            <li><a href="/news/2022/03">March</a></li>
	            
	            <li><a href="/news/2022/02">February</a></li>
	            
	            </ul>
	        
	            
	            <h2>2021</h2>
	            <ul>
	            <li><a href="/news/2021">All of 2021</a></li>
	            
	            <li><a href="/news/2021/12">December</a></li>
	            
	            <li><a href="/news/2021/11">November</a></li>
	            
	            <li><a href="/news/2021/09">September</a></li>
	            
	            <li><a href="/news/2021/07">July</a></li>
	            
	            <li><a href="/news/2021/04">April</a></li>
	            
	            <li><a href="/news/2021/03">March</a></li>
	            
	            </ul>
	        
	            
	            <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 © 2022 — 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>
