wicketで詰まった箇所:「ListView」と「ExternalLink」
wicketで非常に躓いた部分があったのでメモ。
wicketでは、tableのtr要素などの繰り返し要素を生成するために「Listview」という便利なコンポーネントが用意されています。
便利なのですが、個人的にはこれを導入するのが非常にやっかいでした。
繰り返す中でgetModelObjectを用いてリストのオブジェクトを生成するのですが、それをどう取ってやるのかがいまいちわからなくて詰まりました。
最初、
add(new ListView<TweetTable>("tweetlistview", tweets){ @Override protected void populateItem(ListItem<TweetTable> item){ final List<TweetTable> tweet = (List<TweetTable>)item.getModelObject(); item.add(new Label("id", tweet.get(0).getId().toString())); item.add(new Label("tweet", tweet.get(0).getTweet())); } });
としていたのですが(今考えるとなぜこうしていたのかも謎ですが)、これでは動かず、
add(new ListView<TweetTable>("tweetlistview", tweets){ @Override protected void populateItem(ListItem<TweetTable> item){ final TweetTable tweet = (TweetTable)item.getModelObject(); item.add(new Label("id", tweet.getId().toString())); item.add(new Label("tweet", tweet.getTweet())); } });
としてやることで動きました。
ん〜、ListViewに突っ込んだ型に合わせろってことなんでしょうかね。
理由はよく分かりません;
もう一つ躓いたもの。
wicketでは外部ページに遷移するリンクを生成するのにExternalLinkを用いるのですが、これの使い方を解説してるページが少なく、詰まりました。
<a>タグで挟む文字列が固定の時は
<a href="#" wicket:id="external">外部ページ</a>
add(new ExternalLink("external", "http://hoge.com");
なのですが、<a>タグで挟む文字列もwicketで生成したい場合は
<a href="#" wicket:id="external">外部ページ</a>
String externalPageName = "ほげぺーじ"; add(new ExternalLink("external", "http://hoge.com", externalPageName);
となります。
これが分からず、ずっと
<a href="#" wicket:id="external"> <span wicket:id="str">文字列</span> </a>
String externalPageName = "ほげぺーじ"; add(new ExternalLink("external", "http://hoge.com"); add(new Label("string", externalPageName);
としてエラーを返されていました。
ドキュメントをきちんと読めばいいのでしょうがね^^;
とりあえず、自分用メモ的な感じで書いておきました。