2008年12月17日水曜日

Wicketを触ってみた

Wicketをちょっとだけですが触ってみました。
それまでは、随分前に社内勉強会したのと、Wicket勉強会で聞きに行くぐらいしかしていなかったので、始めて触ってみたのと一緒。

感想としては....
サクサク書けていけるから気持ちがいいと言われているのも分かる。
でも、やっぱりHTMLテンプレートの存在が気になってしまう。

「デザインとコードを分ける=デザイナとコーダーが並行作業しやすい」という利点は多分大きいんだろうなぁーと思う。
まぁ、私はデザイナと一緒に仕事はした事がないのですが。。孫請けのような仕事ばっかりだったので。

でも、HTMLテンプレートがあるからサクサク感が損なわれる所もあるよね。
(と思ってしまうのは、私がSwingの開発の方が慣れているからかも)

だからといって、HTMLにはdivタグひとつ置いてコードから全部レイアウトしていくのは、デザイナとコーダーが並行作業という場合にはNGだろうし。

まぁ、ここの所は使う人次第って所なんでしょうが、 GWTよりもWicketの方がHTMLでレイアウトしようねっ!って雰囲気が感じられたよぉ〜なぁ〜〜気がしました。< 無責任発言

そういえば、GWTって結構海外では使われている雰囲気がしますよね。日本で感じるよりももっとのびてくるのかもしれないなぁ。ずっと前にサンプル触ったぐらいだったので、また改めていないとな。そうそう、GWT触ったメモの所のサーバが12月末で契約をキルのでこのドキュメントもなんとかせねば。

Wicketに話は戻って。。
Wicketが大規模案件に採用された場合...個人の属人性をなくすために、やっぱり、こぅいぅ時はPropertyModelを使わないといけない。とか、AbstractReadOnlyModelは使わない事。とかコーディングの決め事が多くなったりするんだろうか。
そんな開発だとちょっとWicketの良さも半減しちゃぃそうですね。

さて、いくつか引っかかった所をメモ。

Wicketを実行すると
java.lang.AbstractMethodError: org.slf4j.impl.Log4jLoggerAdapter.isTraceEnabled()Z
at org.apache.wicket.util.thread.Task$1.run(Task.java:107)
at java.lang.Thread.run(Thread.java:613)
のエラーがコンソールに表示されるっつー問題。

この原因は、org.slf4jのversionで、古いものを使っていたため....でした。
<dependency>
    <groupId><org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.4.2</version>
</dependency>
が正解。

教訓:Wicketが用意してくれている、mvn archetype:create でプロジェクトは作ろうね。手元にあるコードをコピってバージョンだけ変えたりしないように(笑)


<wicket:link>で、パッケージが違うものは設定できない?!
aqubi.samples.wicket.page.LabelPage.html
aqubi.samples.wicket.page.extension.ModalWindowPage.html
と、同一パッケージでないページをwicket:linkを使って表示させようと思い、
    <wicket:link>
        <a href="LabelPage.html">Label</a>
        <a href="extension/ModalWindowPage.html">ModalWindow</a>
    </wicket:link>
なぁ〜んてしてみたけどダメ。

ですが、実は1.4-M3から出来るようになっているらしい!!1.3.5で試していたからなぁ〜〜

1.4-rcでやってみたら無事に動いた。
ちなみにフルパスを書いてあげれば、このリンクの部分は使い回しできましたよ。
    <wicket:link>
        <a href="/aqubi/samples/wicket/page/LabelPage.html">Label</a>
        <a href="/aqubi/samples/wicket/page/extension/ModalWindowPage.html">ModalWindow</a>
    </wicket:link>
...とこんな感じ。

教訓:そりゃ最新バージョンの方が機能が増えたりバグが減っているわ。試してみるぐらいなら最新の方がハマるような場面が少ない(...事もある)


触ってみたコードは前のエントリーで書いたGitHubで登録してみました。
単純にコンポーネント並べただけのようなものなので、全くもって体したものではございませんが,public公開にしているのでよければ、
http://github.com/aqubi/wicket-sampleどうぞっ!

...他の人が上手くこのリポジトリから取得できるのかどうかはまだ分からず。
もし取得してみた方がいらしたら、どうだったか情報を教えてもらえると嬉しいです!
• • •