Wicket1.3でのURLマッピング
wicket-jaに触発されて、試しにWicketを触ってみました。1.3は最近リリースされたのですが、そのためWebに情報がほとんどないのが難点ですね。
WicketではURLマッピングをするときにXMLに書くのではなくniceURLという仕組みを使います。
これを使っていないと、
http://localhos:8080/example/?wicket:bookmarkablePage=〜
のようなかっこ悪いURLになってしまいます。
クラスにマッピングする
niceURLを利用するには、WebApplicationを継承したクラスのinitメソッドの中で、mountBookmarkablePageメソッドを実行します。
package example; import org.apache.wicket.protocol.http.WebApplication; public class ExampleApplication extends WebApplication { public ExampleApplication() { super(); } public void init() { mountBookmarkablePage("/hoge", Hoge.class); } public Class getHomePage() { return Index.class; } }
上のようにmountBookmarkablePageメソッドを使うことで、http://localhost:8080/example/hogeというURLにHogeというPageクラスをマッピングすることができます。
しかしこの方法だと、クラスを追加するたびにmountBookmarkablePageメソッドを追加していく必要があるので面倒です。
パッケージにマッピング
「【wicket】アプリケーションのURL - t100-開発メモ - アットウィキ」を参考にやってみたところ、うまくいきませんでした。
WicketのJavaDocsを参照してみたところ、パッケージ単位で指定する場合、Wicket1.3ではmountBookmarkablePageではなくmountメソッドを使用するようです。
package example; import org.apache.wicket.protocol.http.WebApplication; import org.apache.wicket.util.lang.PackageName; public class ExampleApplication extends WebApplication { public ExampleApplication() { super(); } public void init() { mount("/base", PackageName.forPackage(Package.getPackage("example"))); } public Class getHomePage() { return Index.class; } }
上記の場合、exampleというパッケージを指定しています。
この設定をすると、http://localhost:8080/example/base/HogeというURLでPageクラスであるHogeを呼び出すことができます。
パッケージ単位の場合、/直下にマッピングはできないのかな?
ちなみにniceURLを使う場合、パラメータを持つURLはhttp://localhost:8080/example/hoge/param1/1/のようになります。