Wicket(10)wickt-exmamplesを解析する(helloworld)
Wicket (9)wicket-examplesをTomcatに導入してみるでEclipseに取り込んだ
Wicketのサンプル「wicket-examples」を解析してみます。
今回は「helloworld」exampleです。
1.web.xml
menu画面の「helloworld」リンクの遷移先URLは、「...\helloworld」になっています。
このURLをweb.xmlから検索すると、以下の記述があります。
<filter-mapping>
<filter-name>HelloWorldApplication</filter-name>
<url-pattern>/helloworld/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
「helloworld」というURLがリクエストとしてくると、「HelloWorldApplication」フィルタが
実行されることがわかります。
次に「HelloWorldApplication」フィルタの定義を探すと、以下の記述があります。
<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.apache.wicket.examples.helloworld.HelloWorldApplication</param-value>
</init-param>
</filter>
このフィルタの実行時に最初に起動するアプリケーションクラスは「HelloWorldApplication」
パッケージは「org.apache.wicket.examples.helloworld」だとわかります。
2.ソース構成
web.xmlに定義されていたパッケージのフォルダを見てみます。
フォルダのパスは「Eclipseのワークスペース\wicket-examples\src\main\java\パッケージのパス」です。
ソース構成は以下の通りです。
[\org.apache.wicket.examples.helloworld]
+- HelloWorld.html
HelloWorld.java
HelloWorldApplication.java
このうち「HelloWorldApplication.java」が、リクエストがあると最初に起動するクラスです。
3.HelloWorldApplication.java
(省略)
public class HelloWorldApplication extends WicketExampleApplication
{
(省略)
@Override
public Class getHomePage()
{
return HelloWorld.class;
}
}
Wicketのアプリケーションクラスは「WebApplication」クラスを継承する必要がありますが
このサンプルでは「WicketExampleApplication」クラスが「WebApplication」クラスを継承しており
各アプリケーションクラスは「WicketExampleApplication」クラスを継承しています。
getHomePage()メソッドで、レスポンスとして返却するクラスとして「HelloWorld」クラスを定義しています。
4.HelloWorld.java
(省略)
public class HelloWorld extends WicketExamplePage
{
(省略)
public HelloWorld()
{
add(new Label("message", "Hello World!"));
}
}
Wicketのページクラスは「WebPage」クラスを継承する必要がありますが
このサンプルでは「WicketExamplePage」クラスが「WebPage」クラスを継承しており
各ページクラスは「WicketExamplePage」クラスを継承しています。
「WicketExamplePage」クラスは、このサンプル内のページクラスで共通する定義を実装しています。
コンストラクタでLabelをページに追加しており、表示するメッセージ「Hello World!」も設定しています。
5.HelloWorld.html
(省略)
<body>
<span wicket:id="mainNavigation"/>
<span wicket:id="message" id="message">Message goes here</span>
</body>
(省略)
タグに「wicket:id=」をつけて、wicketのコントロールとして定義します。
「wicket:=id="message"」の定義があるタグに、HelloWorld.javaはメッセージを設定しています。