Wicket

Architecture

Application
The application class, descending from WebApplication, is the site's starting point. getHomePage() returns the home WebPage component.
Component
Everything in Wicket is a component. A component can render itself as HTML, and persists its state (model) across page transitions.
Template
Components can be associated with an HTML template; the file name (preceeding .html) must be the same as the component's class name. Elements with a wicket:id attribute are connected to child components.
Model
Any object implementing IModel can be the model for a wicket component.

State

Component state appears to be maintained through a combination of URL, hidden fields, and server state.

Source Files

app/Name.java
The model.
app/App.java
The application.
app/Index.java
A component representing the index page.
app/Index.html
The template for the index component.
app/Index$NameWizard.html
The wizard template.
app/Index$NameWizard$A.html
The template for screen A.
app/Index$NameWizard$B.html
The template for screen B.
app/Index$NameWizard$C.html
The template for screen C.

Deployment

Deployment is the same as for any other Java web application with custom servlets, and can be performed with standard JEE tools.

Tools

A variety of plug-ins are available to add Wicket support to popular Java IDEs. This application was developed with the NetBeans Wicket module.