<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <title>Home | Apache Wicket</title>
        <meta charset="utf8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta name="viewport" content="width=device-width, initial-scale=1" />

        <link rel="shortcut icon" href="/favicon.ico" type="image/vnd.microsoft.icon" />
        <link rel="stylesheet" href="/css/style.css" type="text/css" media="screen" />
        <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" />

		<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
        <link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/jquery.slick/1.5.5/slick.css"/>
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/jquery.slick/1.5.5/slick-theme.css"/>

<script type="text/javascript" src="//cdn.jsdelivr.net/jquery.slick/1.5.5/slick.min.js"></script>

    </head>

    <body class="index">
        <div class="header jumbotron">
<nav class="mainmenu">
    <ul>
		<!-- /start/quickstart.html ||  -->
    	<li class=""><a href="/start/quickstart.html">Quick Start</a></li>
		<!-- /start/download.html ||  -->
    	<li class=""><a href="/start/download.html">Download</a></li>
		<!-- /learn ||  -->
    	<li class=""><a href="/learn">Documentation</a></li>
		<!-- /help ||  -->
    	<li class=""><a href="/help">Support</a></li>
		<!-- /contribute ||  -->
    	<li class=""><a href="/contribute">Contribute</a></li>
		<!-- /apache ||  -->
    	<li class=""><a href="/apache">Apache</a></li>
    </ul>
</nav>
    <div class="jumbotron-logo">
        <a href="/"><img src="/img/logo-apachewicket-white.svg" alt="Apache Wicket"></a>
    </div>
    <div class="jumbotron-mission">Write maintainable, secure and scalable web applications using just Java and HTML</div>
    <div class="jumbotron-download">
        <a class="button" href="#news">Latest News</a>
        <a class="button" href="/start/quickstart.html">Get started</a>
    </div>
    <div class="l-first">&nbsp;</div>
</div>
<div class="l-container">
    <section>
        <!-- removed because it doesn't work (yet)
  -
   path: builtwithwicket.html
   sectionId: tumblr
-->
<div class="l-full l-first preamble">
    <h1>Introducing Apache&nbsp;Wicket</h1>
    <p>Invented in 2004, Wicket is one of the few survivors of the Java
    serverside web framework wars of the mid 2000's. Wicket is an open
    source, component oriented, serverside, Java web application framework.
    With a history of over a decade, it is still going strong and has a
    solid future ahead. Learn why you should consider Wicket for your next
    web application.</p>
</div>
<div class="l-first">
    <div class="l-one-third">
        <img src="/img/java-wicket-html5.png" class="l-full" />
        <h3>Just Java &amp; HTML</h3>
        <p>Leverage what you know about Java or your favourite HTML 
        editor to write Wicket applications. With pure Java code and HTML 
        markup Wicket is the go-to web framework for purists.</p>
    </div>
    <div class="l-one-third">
        <img src="/img/wicket-safe.png" class="l-full" />
        <h3>Secure by Default</h3>
        <p>URLs do not expose sensitive information and all component paths are
        session-relative. Wicket keeps your model private except those parts
        you explicitly expose.</p>
    </div>
    <div class="l-one-third">
        <img src="/img/wicket-components.png" class="l-full" />
        <h3>AJAX Components</h3>
        <p>Write Ajax applications without having to write a single line 
        of JavaScript code. Wicket's Ajax functionality makes it trivial 
        to update selected parts of a UI, and comes with a great selection 
        of basic Ajax components.</p>
    </div>
</div>
<div class="l-first">
    <div class="l-one-third">
        <h3>Open Source with Apache License</h3>
        <p>Since its inception in 2004 Wicket has been an open source
        project and remains available under one of the most permissive
        licenses: the Apache Software License.</p>
    </div>
    <div class="l-one-third">
        <h3>Maintainable code</h3>
        <p>Pages and Components in Wicket are real Java objects that support
        encapsulation, inheritance and events. Create high level components
        with ease and bundle its stylesheets, JavaScript and other resources
        into one reusable package.</p>
    </div>
    <div class="l-one-third">
        <h3>Internationalized to take on the world</h3>
        <p>With support of over 25 languages out-of-the-box, Wicket let's 
        you get started in your own language, or a second language with no 
        effort. You can provide alternative languages on the application, 
        page, or even component level.</p>
    </div>
</div>
<div class="l-first">
    <div class="l-one-third">
        <h3>Multi-tab and window support</h3>
        <p>No more pain while keeping taps on multiple tabs and windows. 
        Wicket's automatic state storage ensures that your users can open 
        pages in new tabs and windows without causing problems.</p>
    </div>
    <div class="l-two-third">
        <h3>Work with JavaScript and CSS</h3>
        <p>Global JavaScript libraries and CSS styling mix properly with 
        component local JavaScript and CSS resources. You can use custom 
        component libraries that ship with default JavaScript behaviour and 
        CSS styling, without having to do anything yourself. Creating such 
        self-contained component libraries is as easy as creating a JAR 
        file.</p>
    </div>
</div>
<div class="l-first">
    <div class="l-one-third">
        <h3>Test your pages and components</h3>
        <p>With WicketTester you can achieve testing coverage your QA 
        department can only dream of. Test your pages without having to run 
        inside a browser, or start a container. Test your components directly, 
        check their rendered markup tags, attributes and contents with ease.</p>
    </div>
    <div class="l-one-third">
        <h3>Injection support</h3>
        <p>Inject your services into your pages and components with the 
        technology of your choosing: Wicket provides integration with CDI 
        (JSR-305), Spring and Guice.</p>
    </div>
    <div class="l-one-third">
        <h3>JavaEE integration</h3>
        <p>If you are using the Web profile of JavaEE 6 or newer, you can 
        leverage JPA, EJBs, Bean Validation and CDI with Wicket's integrations 
        for these specifications.</p>
    </div>
</div>
<div class="l-first"></div>
    </section>
    <section id="builtwithwicket" class="builtwithwicket">
	   	<header class="preamble">
    <h1>Projects Using Apache Wicket</h1>
    <p>
        Many projects use Wicket but are not known for it. Below you 
        find a list of projects that are "Powered by Wicket".
    </p>
</header>
<article class="l-full">
    <div class="builtwithwicket-slider"></div>
    <br><br>
    <p>
        This list is generated from our Tumblr feed 'Built with Wicket'. 
        You can submit your own project to this list through 
        <a href="http://builtwithwicket.tumblr.com/submit" rel="nofollow">this form</a>.
    </p>
</article>
<div class="l-first"></div>
<!-- Only display the blog image, title and post URL -->   
<script type="text/javascript"> 
    function randomIntFromInterval(min,max)
    {
        return Math.floor(Math.random()*(max-min+1)+min);
    }
    $.getJSON('http://builtwithwicket.tumblr.com/api/read/json?callback=?',
        function(response) {   
            var posts = response.posts;  
            for(var postIndex in posts) {
                var post = posts[postIndex];
                var caption = jQuery('<div>' + post['photo-caption'] + '</div>').text().substring(0,150) + "...";
                var newSlide = $('.builtwithwicket-slider').append(
                    '<div class="builtwithwicket-post">\n' +
                    '  <img class="builtwithwicket-screenshot" data-lazy="' + post['photo-url-500'] + '">\n' +
                    '  <p class="builtwithwicket-caption">' + caption + '</p>\n' +
                    '  <a href="' + post['url'] + '" rel="nofollow">More</a>\n' + 
                    '</div>');
            }
            $('.builtwithwicket-slider').slick({
                arrows: true,
                autoplay: true,
                autoplaySpeed: 5000,
                dots: true,
                draggable: true,
                infinite: true,
                initialSlide: randomIntFromInterval(0, posts.length),
                lazyLoad: 'ondemand',
                pauseOnDotsHover: true,
                responsive: [    {
                        breakpoint: 590,
                        settings: {
                            slidesToShow: 1,
                            slidesToScroll: 1
                        }
                    },
                    {
                        breakpoint: 960,
                        settings: {
                            slidesToShow: 2,
                            slidesToScroll: 2
                        }
                    },
                ],
                slidesToShow: 3,
                slidesToScroll: 3,
                swipe: true,
            });
        });
</script>
    </section>
    <section id="news" class="">
	   	<div class="l-full l-first preamble">
    <h1>News about Apache Wicket</h1>
    <p>Get the latest updates to releases, security bulletins, community 
    news and more.</p>
</div>
<div class="l-two-third">
    <article>
        <h2>Apache Wicket 7.0.0-M6 released</h2>
        <small>21 Jun 2015</small>
        <p>The Apache Wicket PMC is proud to announce Apache Wicket 7.0.0-M6!</p>
<p>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.</p>
<h3 id="caveats">Caveats</h3>
<p>It is still a development version so expect API breaks to happen over
the course of the coming milestone releases.</p>
<h3 id="semantic-versioning">Semantic versioning</h3>
<p>As we adopted semver Wicket 7 will be the first release since 6.0 where
we are able to refactor the API. We will continue to use semver when we
have made Wicket 7 final and maintain api compatibility between minor
versions of Wicket 7.</p>
<h3 id="requirements">Requirements</h3>
<p>Wicket 7 requires the following:</p>
<ul>
  <li>Java 7</li>
  <li>Servlet 3 compatible container</li>
</ul>
<p>You can’t mix wicket libraries from prior Wicket versions with Wicket 7.</p>
<h3 id="migration-guide">Migration guide</h3>
<p>As usual we have a migration guide available online for people
migrating their applications to Wicket 7. We will continue to update
the guide as development progresses. If you find something that is not
in the guide, please update the guide, or let us know so we can update
the guide.</p>
<p>You can find the guide here: <a href="http://s.apache.org/wicket7migrate">http://s.apache.org/wicket7migrate</a></p>
<h3 id="new-and-noteworthy">New and noteworthy</h3>
<ul>
  <li>
    <p>New inline image support for the new data: protocol. See
http://ci.apache.org/projects/wicket/apidocs/6.x/org/apache/wicket/markup/html/image/InlineImage.html
for more information.</p>
  </li>
  <li>
    <p>Added CSRF prevention measure to Wicket. The
CsrfPreventionRequestCycleListener
(http://ci.apache.org/projects/wicket/apidocs/6.x/org/apache/wicket/protocol/http/CsrfPreventionRequestCycleListener.html)
will prevent requests coming from other origins than allowed from
performing actions. See the JavaDoc for more information on this
listener.</p>
  </li>
  <li>
    <p>JQuery was upgraded to most recent version.</p>
  </li>
</ul>
<h3 id="using-this-release">Using this release</h3>
<p>With Apache Maven update your dependency to (and don’t forget to
update any other dependencies on Wicket projects to the same version):</p>
<div class="highlight"><pre><code class="language-xml" data-lang="xml"><span class="nt">&lt;dependency&gt;</span>
    <span class="nt">&lt;groupId&gt;</span>org.apache.wicket<span class="nt">&lt;/groupId&gt;</span>
    <span class="nt">&lt;artifactId&gt;</span>wicket-core<span class="nt">&lt;/artifactId&gt;</span>
    <span class="nt">&lt;version&gt;</span>7.0.0-M6<span class="nt">&lt;/version&gt;</span>
<span class="nt">&lt;/dependency&gt;</span></code></pre></div>
<p>Or download and build the distribution yourself, or use our
convenience binary package</p>
<ul>
  <li>Source: <a href="http://www.apache.org/dyn/closer.cgi/wicket/7.0.0-M6">http://www.apache.org/dyn/closer.cgi/wicket/7.0.0-M6</a></li>
  <li>Binary: <a href="http://www.apache.org/dyn/closer.cgi/wicket/7.0.0-M6/binaries">http://www.apache.org/dyn/closer.cgi/wicket/7.0.0-M6/binaries</a></li>
</ul>
<h3 id="about-this-release">About this release</h3>
<p>Below you can find the cryptographic signatures for the distributions
and the release notes.</p>
<h4 id="the-signatures-for-the-source-release-artefacts">The signatures for the source release artefacts:</h4>
<p>The signatures for the source release artefacts:</p>
<p>Signature for apache-wicket-7.0.0-M6.zip:</p>
<div class="highlight"><pre>
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org
iEYEABECAAYFAlWANLgACgkQJBX8W/xy/UXSmQCgtAb+JrBeiq4+OdbpbN22sy+/
F3YAn2ZeQ4byJPdmc4m4K6LLgg41AWSU
=xN5i
-----END PGP SIGNATURE-----
</pre></div>
<p>Signature for apache-wicket-7.0.0-M6.tar.gz:</p>
<div class="highlight"><pre>
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org
iEYEABECAAYFAlWANLgACgkQJBX8W/xy/UUEsACgxiS2RQzuOi35Yw5C4c90KAFZ
yPIAoMU7z9Go0pn5ZFKZwq+VDA0cvoh4
=KW/I
-----END PGP SIGNATURE-----
</pre></div>
<h4 id="changelog-for-700-m6">CHANGELOG for 7.0.0-M6:</h4>
<p>Release Notes - Wicket - Version 7.0.0-M6</p>
<h4 id="bugs">Bugs</h4>
<pre><code>* [WICKET-5790] - VariableInterpolator &amp; #getThrowExceptionOnMissingResource
* [WICKET-5814] - CryptoMapper clears feedback messages
* [WICKET-5816] - Apps can't use Application.setName instead of WicketFilter for e.g. JMX names
* [WICKET-5822] - AjaxSelfUpdatingTimer stops working after ajax download
* [WICKET-5825] - Deployment of wicket-examples.war fails in Tomcat
* [WICKET-5828] - PageProvider not serializable
* [WICKET-5834] - NPE in DefaultPropertyResolver
* [WICKET-5835] - InlineEnclosure doesn't call child.configure() before updating its visilbity
* [WICKET-5837] - JUnit tests may fail because of AbstractDefaultAjaxBehavior
* [WICKET-5838] - Last-modified header of external markup is ignored
* [WICKET-5841] - continueToOriginalDestination() discards new cookies
* [WICKET-5843] - CryptoMapper doesn't work with context relative UrlResourceReferences
* [WICKET-5845] - AuthenticatedWebSession.get() returns a new session with signedIn false
* [WICKET-5850] - LazyInitProxyFactory causes NoClassDefFound org/apache/wicket/proxy/ILazyInitProxy in case of multimodule deployment
* [WICKET-5851] - PackageResourceTest#packageResourceGuard test fails under Windows
* [WICKET-5853] - LongConverter converts some values greater than Long.MAX_VALUE
* [WICKET-5855] - RememberMe functionality seems to be broken after the change of the default crypt factory
* [WICKET-5856] - StackOverFlowError when working with transparent containers
* [WICKET-5857] - PagingNavigator invalid HTML (rel attribute on span tag)
* [WICKET-5858] - AjaxRequestTarget.focusComponent does not work in modal window
* [WICKET-5861] - BigDecimalConverter does not allow parsing of values great than Double.MAX_VALUE
* [WICKET-5862] - Wicket Container visibility bug
* [WICKET-5864] - Multipart Ajax form submit does not release the channel in case of connection failure
* [WICKET-5869] - Kittencaptcha doesn't calculate click y-coordinate correctly
* [WICKET-5870] - wicket-event-jquery.js: Wicket.Browser.isIE11() does not return boolean
* [WICKET-5874] - WicketTester TagTester does not work as expected when using non self closing tags
* [WICKET-5879] - Using an AjaxSubmitLink to hide its form results in an exception
* [WICKET-5881] - NPE in FormComponent#updateCollectionModel in case of no converted input and unmodifiable collection
* [WICKET-5883] - Feedback messages not cleared for invisible/disabled form components on submit.
* [WICKET-5887] - wicket.xsd refers to non-existing xhtml.label:attlist
* [WICKET-5891] - Parsing of ChinUnionPay credit card should use the first 6 characters
* [WICKET-5893] - CookieUtils should use the original response when saving a cookie
* [WICKET-5895] - validateHeaders fails to detect missing head/body (regression)
* [WICKET-5898] - StackOverflowError after form submit with a validation error
* [WICKET-5900] - Add WicketTester support for IAjaxLink
* [WICKET-5903] - Regression in mount resolution when using optional parameters
* [WICKET-5904] - NPE after editing a markup file in debug mode
* [WICKET-5906] - Use default on missing resource does not work
* [WICKET-5908] - A new HtmlHeaderContainer is added each time a page instance is rendered
* [WICKET-5910] - CGLib proxy should not intercept protected methods
* [WICKET-5911] - Re-rendering page after exception in render phase does not call onBeforeRender()
* [WICKET-5912] - NPE in Page#hasInvisibleTransparentChild
* [WICKET-5915] - The application can not find /META-INF/wicket/**.properties on Windows systems
* [WICKET-5916] - StackOverflowError when calling getObject() from load() in LDM
* [WICKET-5917] - Do not use jQuery's $ in String snippets in Java code
</code></pre>
<h4 id="improvement">Improvement</h4>
<pre><code>* [WICKET-5314] - AbstractAutoCompleteBehavior does not support AjaxChannels
* [WICKET-5749] - Wicket-auth-roles should deal with resource authorization
* [WICKET-5789] - Make org.apache.wicket.protocol.ws.javax.WicketServerEndpointConfig publicly visible
* [WICKET-5801] - Responsive Images
* [WICKET-5823] - DefaultAuthenticationStrategy should be modified to reduce copy/paste while extending it's functionality
* [WICKET-5829] - rename PageSettings#recreateMountedPagesAfterExpiry
* [WICKET-5831] - Improve unsafe Id reporting in the AbstractRepeater
* [WICKET-5832] - Do not fail at CDI's ConversationPropagator when running in non-http thread
* [WICKET-5833] - Add a way to get all opened web socket connections per user session
* [WICKET-5840] - WicketTester doesn't support #clickLink() for ExternalLink component
* [WICKET-5859] - Add Hebrew and Arabic translations
* [WICKET-5860] - Cross-Site Websocket Hijacking protection
* [WICKET-5863] - Overiding disableCaching in ServletWebResponse is ignored when responce is buffered
* [WICKET-5865] - AjaxEditableLabel should implement IGenericComponent
* [WICKET-5872] - wicket extensions initializer.properties for greek language
* [WICKET-5875] - ComponentRenderer.renderComponent() unexpectedly produces a WicketRuntimeException when called with a nested Component which contains a nested wicket:message
* [WICKET-5889] - Ability to not submit a nested form
* [WICKET-5892] - add ClientProperties#isJavaScriptEnabled()
* [WICKET-5894] - Support *.woff2 webfonts in SecurePackageResourceGuard as well
* [WICKET-5901] - Leaving veil when ajax processing ends with redirect
* [WICKET-5905] - allow listening to Ajax calls before scheduling
* [WICKET-5921] - Provide a default implementation of IModelComparator that always returns false
</code></pre>
<h4 id="new-feature">New Feature</h4>
<pre><code>* [WICKET-5819] - Support for HTML 5 media tags (audio / video)
* [WICKET-5827] - Allow to apply multiple Javascript / CSS compressors
* [WICKET-5897] - Use the #isEnabled() method with validators
* [WICKET-5918] - Create an Image component that uses the new data: protocol (an InlineImage)
* [WICKET-5919] - Add support for CSRF prevention
</code></pre>
<h4 id="task">Task</h4>
<pre><code>* [WICKET-5896] - Upgrade jQuery to latest stable versions (1.11.4 &amp; 2.1.3)
</code></pre>
<h4 id="wish">Wish</h4>
<pre><code>* [WICKET-5848] - Remove .settings folders of projects
</code></pre>
<p>Have fun!</p>
<p>— The Wicket team</p>
        <a href="/news/2015/06/21/wicket-7.0.0-M6-released.html">Read more...</a> 
    </article>
</div>
<div class="l-one-third news">
<h2>Older news</h2>
<p>See the <a href="/news">archives</a> for all news
articles concerning release, security and community updates.</p>
<p>Note that you can subscribe to our <a type="application/atom+xml"
title="Atom 1.0 feed" href="/atom.xml">RSS feed</a> to
get updates in your favorite RSS reader the moment they happen.</p>
<ul>
<li>
    <h3>Apache Wicket 6.20.0 released</h3>
    <small>14 Jun 2015</small>
    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...
    <a href="/news/2015/06/14/wicket-6.20.0-released.html">more</a>
</li>
<li>
    <h3>Wicket 1.5.13 released</h3>
    <small>13 Feb 2015</small>
    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...
    <a href="/news/2015/02/13/wicket-1.5.13-released.html">more</a>
</li>
<li>
    <h3>New committer - Sebastien Briquet</h3>
    <small>13 Feb 2015</small>
    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...
    <a href="/news/2015/02/13/new-committer-Sebastien-Briquet.html">more</a>
</li>
<li>
    <h3>Apache Wicket 7.0.0-M5 released</h3>
    <small>02 Feb 2015</small>
    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...
    <a href="/news/2015/02/02/wicket-7.0.0-M5-released.html">more</a>
</li>
<li>
    <h3>Apache Wicket 6.19.0 released</h3>
    <small>02 Feb 2015</small>
    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...
    <a href="/news/2015/02/02/wicket-6.19.0-released.html">more</a>
</li>
</ul>
</div>
<div class="l-first"></div>
    </section>
</div>
        <footer class="l-container">
            <div class="l-full">
    <img height="60px" src="/img/asf_logo.gif" style="float:left">
    Copyright © 2014 — 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>
        </footer>
    </body>

</html>
