Documentation

Explanation

Why Wicket works the way it does.

Getting started

  • Why component-oriented What a component-oriented framework does differently from request-based MVC frameworks, what Wicket gains from it, and what it costs.
  • Best practices The habits that keep a Wicket application easy to change and to test, each with the reason it follows from how Wicket works.

Components and markup

  • Markup inheritance How a page or panel subclass inherits its parent's HTML along with its Java code, how wicket:child and wicket:extend merge the two, and when panels are the better tool.
  • How markup becomes components How Wicket loads, parses and caches markup, and how Wicket tags turn into auto components that you never add yourself.

Models

  • Models and component data Why a component reads its data through a model, what happens to that data between requests, and why wrapping an entity in Model goes wrong.

Forms

  • How a form is processed The order in which Wicket checks, converts, validates and stores submitted input, and why a form updates all its models or none.

Ajax and JavaScript

  • How Wicket Ajax works What happens between a click in the browser and the updated components on the page, and why components need a markup id.

WebSockets

  • How native WebSockets work How Wicket connects a page to a WebSocket, routes messages to components, pushes updates from other threads, and what that means for sessions and locking.
  • Redirects after a request Why Wicket answers a form submit or link click with a redirect, how the three render strategies differ, and what that means for stateless pages and clusters.

Resources

  • How Wicket serves resources What resources and resource references are, why components carry their own CSS and JavaScript, and how Wicket gives every file a cacheable URL.

Pages and state

  • Stateful and stateless pages Why Wicket keeps pages between requests, how page versions serve the back button, and what a stateless page gives up and gains.
  • How pages are stored How Wicket finds the page for a request, and the chain of stores that keeps stateful pages in the request, the session and on disk.

Requests and lifecycle

  • What happens during a request How Wicket turns an HTTP request into a request handler, runs it, and cleans up afterwards, and why it is built that way.

Localization

  • How Wicket localizes Where the locale of a page comes from, why texts live in properties files next to the components that use them, and why the page can override its panels.

Security

  • How Wicket keeps applications secure What Wicket defends against by default (escaping, a strict CSP, stateful URLs and encryption) and what it leaves to your application and your deployment.