さて、最近Wicketを頑張っている。
とりあえず、「Javaウェブフレームワーク「Wicket」の使い方」を見ながら、
サンプルのコードを書いていく日々を続けようと思う。
余談だが、最初このページを見つけたとき、
サーバが落ちてたのか知らないが見れなかったので、
Twitterでつぶやいてみた所、実は
サイトオーナーに伝わっていたらしい。
と言うか、フォローされてた。俺もしてた。
と言うか、有名な人じゃねーか!
Wicket本書いとるがな。
コレは驚きだ。
で、まぁそのサイトは再起動してくれてた。
が、情報が古いとの事。でも気にせずコードを書いていく。
まず、ろくに記事を読まずに「日付を出そう!」と思い立ってみたんだが、
早速サンプルにあった。
こんな風に書けばいいらしい。
- add( new Label("test", new AbstractReadOnlyModel() {
- public Object getObject(Component component) {
- return new SimpleDateFormat("yyyy年MM月dd日").format( new Date());
- }
- }));
いいらしいのだが、そう上手くは行かない・・・。
なるほど!と思ってEclipseでコードを書いていたら、AbstractReadOnlyModel
がAbstractReadOnlyModel<T>
になってるじゃないか!
驚きだ。
これが、「情報が古い」の正体か・・・!
このTに何を入れれば良いのかわからんが、解説によると
Labelは文字を表示する際に、自身のもつモデルのgetObject()を呼び出します。このときgetObject()が文字を返しさえすれば、Labelはその動作について一切気にしません。
とのことなので、とりあえずカンで書いてみる。
- Label title = new Label("title",new AbstractReadOnlyModel<String>(){
- private static final long serialVersionUID = 1L;
- @Override
- public String getObject() {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
- String formatedDate = sdf.format(new Date());
- formatedDate += " Wicketを試してみましょう";
- return formatedDate;
- }
- });
AbstractReadOnlyModel<T>
のTは、解説に従いString
にしてみた。
すると、getObject()
もString
を返すように宣言されたので、
まぁ良さげ?かなと思って続行。
試してみたら出来たから問題ないか。
でも、タイムゾーンが狂ってるのか知らないが、日付がおかしい。
しかし、ずっとこんな感じでGenericsと戦うとなると厳しいな。
やはり本購入か・・・。
本とサイトの著者が同じである以上、サイトの方は更新されないだろうし。