Wicket 最大特色:**每個 UI 組件對應一個 Java 類與同名 HTML 檔**,透過 wicket:id 綁定。Java 端負責邏輯與資料,HTML 端純粹負責呈現,設計師與開發者可平行作業。NetBeans Wicket Support 插件提供專案模板、組件向導、雙向導航,極大提升開發效率。
org-netbeans-modules-web-wicket.nbm(模板與功能)org-netbeans-modules-wicket-library.nbm(Wicket JAR 庫)MyFirstWicketApp,伺服器任選(支援 J2EE 1.4/EE 5)。
WicketApplication/wicket/*com.myapp.wicket.WicketApplicationHome(生成 Home.java + Home.html)com.myapp.wicketFinish 後專案結構:

<servlet>
<servlet-name>WicketApplication</servlet-name>
<servlet-class>org.apache.wicket.protocol.http.WicketServlet</servlet-class>
<init-param>
<param-name>applicationClassName</param-name>
<param-value>com.myapp.wicket.WicketApplication</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>WicketApplication</servlet-name>
<url-pattern>/wicket/*</url-pattern>
</servlet-mapping>
public class WicketApplication extends WebApplication {
public Class getHomePage() { return Home.class; } // 必須實作
}
// Home.java
public class Home extends WicketExamplePage { public Home() {} }
<!-- Home.html -->
<html><head><link rel='stylesheet' href='style.css'/></head><body>
<span wicket:id='mainNavigation'/> <!-- 佔位符,對應 Header 組件 -->
</body></html>
public class WicketExamplePage extends WebPage {
public WicketExamplePage() { this(null); }
public WicketExamplePage(IModel model) {
super(model);
add(new WicketExampleHeader("mainNavigation",
Strings.afterLast(getClass().getPackage().getName(), '.')));
}
}
// Java 端
public class WicketExampleHeader extends Panel {
public WicketExampleHeader(String id, String title) {
super(id);
add(new Label("exampleTitle", title));
}
}
<!-- HTML 端 -->
<html xmlns:wicket><body>
<wicket:panel>
<h1>Wicket Example</h1>
<p id="titleblock"><b><font size="+1">Start of
<span wicket:id="exampleTitle">Example Title Goes Here</span>
</font></b></p>
</wicket:panel>
</body></html>
NetBeans 雙向導航: 在 HTML wicket:id 按 Ctrl 點擊 → 跳轉到 Java add(new Label(...));Java 端按 Alt+Left 返回 HTML。


<span wicket:id="message1">this text will be replaced</span>add(new Label("message1", "Hello Wicket!"));
HTML 標籤(如 <h2>)包裹 <span wicket:id> 即可控制樣式,Java 端完全不涉及 HTML 結構。
FooterPanel,包 com.myapp.wicket。FooterPanel.java/.html。<span wicket:id="message">;Java 端已 add(new Label("message", "I am a reusable component!"));。add(new FooterPanel("footerPanel"));</body> 前添加 <span wicket:id='footerPanel'/>
完成本教程後,建議研讀 David R. Heffelfinger《A First Look at the Wicket Framework》中的 Pizza Application 範例,深入掌握 Model、Behavior、AJAX 整合、測試等進階主題。