Jump to content
Wikipedia The Free Encyclopedia

Apache Wicket

From Wikipedia, the free encyclopedia
Software
Apache Wicket
Developer Apache Software Foundation
Stable release
10.5.0[1]  Edit this on Wikidata / 2025-04; 7 months ago
Repository github.com/apache/wicket
Written inJava
Type Web application framework
License Apache License 2.0
Websitewicket.apache.org

Apache Wicket, commonly referred to as Wicket, is a component-based web application framework for the Java programming language conceptually similar to JavaServer Faces and Tapestry. It was originally written by Jonathan Locke in April 2004. Version 1.0 was released in June 2005. It graduated into an Apache top-level project in June 2007.[2]

Rationale

[edit ]

Traditional model-view-controller (MVC) frameworks work in terms of whole requests and whole pages. In each request cycle, the incoming request is mapped to a method on a controller object, which then generates the outgoing response in its entirety, usually by pulling data out of a model to populate a view written in specialized template markup. This keeps the application's flow-of-control simple and clear, but can make code reuse in the controller difficult.

In contrast, Wicket is closely patterned after stateful GUI frameworks such as Swing. Wicket applications are trees of components, which use listener delegates to react to HTTP requests against links and forms in the same way that Swing components react to mouse and keystroke events. Wicket is categorized as a component-based framework.

Design

[edit ]

Wicket uses plain XHTML for templating (which enforces a clear separation of presentation and business logic and allows templates to be edited with conventional WYSIWYG design tools[3] ). Each component is bound to a named element in the XHTML and becomes responsible for rendering that element in the final output. The page is simply the top-level containing component and is paired with exactly one XHTML template. Using a special tag, a group of individual components may be abstracted into a single component called a panel, which can then be reused whole in that page, other pages, or even other panels.

Each component is backed by its own model, which represents the state of the component. The framework does not have knowledge of how components interact with their models, which are treated as opaque objects automatically serialized and persisted between requests. More complex models, however, may be made detachable and provide hooks to arrange their own storage and restoration at the beginning and end of each request cycle. Wicket does not mandate any particular object-persistence or ORM layer, so applications often use some combination of Hibernate objects[citation needed ], EJBs or POJOs as models.

In Wicket, all server side state is automatically managed. You should never directly use an HttpSession object or similar wrapper to store state. Instead, state is associated with components. Each server-side page component holds a nested hierarchy of stateful components, where each component's model is, in the end, a POJO (Plain Old Java Object)

Wicket aims for simplicity. There are no configuration files to learn in Wicket. Wicket is a simple class library with a consistent approach to component structure.

Example

[edit ]

A Hello World Wicket application, with four files:

HelloWorld.html
The XHTML template.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml"
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.3-strict.dtd"
xml:lang="en"lang="en">
<body>
<spanwicket:id="message"id="message">Messagegoeshere</span>
</body>
</html>
HelloWorld.java
The page component that will be bound to the template. It, in turn, binds a child component (the Label component named "message").
packageorg.wikipedia.wicket;
importorg.apache.wicket.markup.html.WebPage;
importorg.apache.wicket.markup.html.basic.Label;
publicclass HelloWorldextendsWebPage{
/**
 * Constructor
 */
publicHelloWorld(){
add(newLabel("message","Hello World!"));
}
}
HelloWorldApplication.java
The main application class, which routes requests for the homepage to the HelloWorld page component.
packageorg.wikipedia.wicket;
importorg.apache.wicket.protocol.http.WebApplication;
publicclass HelloWorldApplicationextendsWebApplication{
/**
 * Constructor.
 */
publicHelloWorldApplication(){
}
/**
 * @see org.apache.wicket.Application#getHomePage()
 */
publicClassgetHomePage(){
returnHelloWorld.class;
}
}
web.xml
The servlet application Deployment Descriptor, which installs Wicket as the default handler for the servlet and arranges for HelloWorldApplication to be instantiated at startup.
<?xml version="1.0" encoding="UTF-8"?>
<web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID"version="2.5">
<display-name>WicketExample</display-name>
<filter>
<filter-name>HelloWorldApplication</filter-name>
<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
<init-param>
<param-name>applicationClassName</param-name>
<param-value>org.wikipedia.wicket.HelloWorldApplication</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>HelloWorldApplication</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

Components

[edit ]

Basic components like form, links, repeaters, and so on are built-in.

Releases

[edit ]
Apache Wicket Versions
Series Description Latest release Latest release date
Latest version: 10.x Migrated from Javax APIs to Jakarta APIs. Dependencies upgraded to support Spring Framework 6 and therefore moving to Java 17 as the required minimum platform, and compatible with Java 21. CGLib is replaced with ByteBuddy.[4] 10.0.0 2024年03月11日
Latest version: 9.x Moving to Java 11 as the required minimum platform, migrated from JUnit 4 to 5, support for Java 12 and 13, rework page and data storage and other improvements.[5] 9.16.0 2023年11月23日
Supported: 8.x Moving to Java 8 as the required minimum platform. Support for Lambdas, required Servlet API version moving to 3.1, support for the new types for handling dates and other improvements.[6] Recommended to upgrade to 9.x version. 8.14.0 2022年01月29日
Supported: 7.x Moving to Java 7 as the required minimum platform, cross site request forgery prevention, support for inline images. The release consist of almost 300 features, improvements and fixes.[7] Only security fixes, recommended to upgrade to 9.x version. 7.18.0 2021年04月02日
Unsupported: 6.x Moving to Java 6 as the required minimum platform. Out-of-the box jQuery integration, complete control over AJAX requests, improved event registration in browsers, support for large datasets, dependency management for client side JavaScript libraries, experimental support for websockets.[8] 6.30.0 2018年12月05日
Unsupported: 1.5.x Improvements of the Wicket features.[9] 1.5.16 2016年08月05日
Unsupported: 1.4.x Moving to Java 5 as the required minimum platform.[10] 1.4.23 2014年02月06日
Unsupported: 1.3.x 1.3.7 2009年07月30日
Unsupported: 1.2.x 1.2.7 2008年03月23日
Unsupported: 1.1.x 1.1.1 TBD
Unsupported: 1.0.x 1.0.3 TBD
Legend:
Unsupported
Supported
Latest version
Preview version
Future version

See also

[edit ]

References

[edit ]

Notes

[edit ]
  1. ^ https://github.com/apache/wicket/blob/master/CHANGELOG-10.x . Retrieved 7 May 2025. {{cite web}}: Missing or empty |title= (help)
  2. ^ Dashorst, Martijn (2007年07月20日). "Wicket graduates from Apache Incubation" . Retrieved 2008年03月07日.
  3. ^ Carleton, Daniel (2007年10月12日). "Java Web Development the Wicket Way". DevX. Archived from the original on 10 March 2008. Retrieved 2008年03月07日.
  4. ^ Announcing Apache Wicket 10: build modern web applications with Java!. wicket.apache.org. Retrieved on 2024年03月11日.
  5. ^ Announcing Apache Wicket 9: get into the modern Java world!. wicket.apache.org. Retrieved on 2020年10月05日.
  6. ^ Announcing Apache Wicket 8: Write Less, Achieve More. wicket.apache.org. Retrieved on 2018年05月22日.
  7. ^ Apache Wicket v7.0 released. wicket.apache.org. Retrieved on 2018年04月16日.
  8. ^ Apache Wicket v6.0.0 released. wicket.apache.org. Retrieved on 2020年10月05日.
  9. ^ Apache Wicket - Apache Wicket releases Wicket 1.5. Wicket.apache.org. Retrieved on 2013年08月13日. Archived October 6, 2014, at the Wayback Machine
  10. ^ Apache Wicket - Apache Wicket 1.4 takes typesafety to the next level Archived April 25, 2012, at the Wayback Machine. Wicket.apache.org. Retrieved on 2013年08月13日.
[edit ]

Official website Edit this at Wikidata

Top-level
projects
Commons
Incubator
Other projects
Attic
Licenses
.NET
C++
ColdFusion
Common Lisp
Haskell
Java
JavaScript
Perl
PHP
Python
Ruby
Rust
Scala
Smalltalk
Other languages

AltStyle によって変換されたページ (->オリジナル) /