[Wicket-ja-user 432] Re: LinkTreeの使い方についてご教授ください。

Back to archive index

TADASHI OMOTE tadas****@gmail*****
2010年 3月 19日 (金) 00:15:50 JST


矢野さん

さっそくの回答ありがとうございました。
いただいた回答で解決しました。
正直、「あ・・・」って感じでした。
なぜか、Nodeを作る時にしこまないとみたいな固定観念にはまってて・・・お恥ずかしいです。
回答をいただいてから、LinkTreeのソースを見直してみると、腹にはまりました。

結局、
tree = new LinkTree("tree_menu",createTreeModel()){
private static final long serialVersionUID = -6349179755428413114L;
	@Override
	protected void onNodeLinkClicked(Object node, BaseTree tree,
AjaxRequestTarget target){
		if(tree.isLeaf(node)){
			setResponsePage(pageSelecter.get(node.toString()));
		}
	}
};

みたいにして、nodeの名称をキーにして、Pageクラスを引っ張るMAP(pageSelecter)を用意したら、思っていた動きになったので、
後は、これをベースにしてもう少し洗練させてみます。

ありがとうございました。

表  正 (おもて ただし)

---------------------------------------------------------------------------------------------------------------------------------------------------------------
>矢野です。

>すみません,私はLinkTreeについてほぼ無知なので明確な回答はできないのですが,クリックされたら何か起きればいい(それが画面遷移であれなんであれ)ということであれば,LinkTreeクラスのonNodeLinkClickedメソッドをオーバーライドすると,ノードがクリックされるたびにそのメソッドが呼ばれると思います。

>そこで,ノードがリーフであることを確認したうえで,setResponsePage()すれば,画面遷移するのではないかと推測しています。

>ちなみにノードがリーフ(葉)であるかどうかは,NodeのisLeaf()メソッドでチェックできるみたいです。


>とりあえずいま分かる範囲で書いてみました。Treeなら俺に任せろ,という人の回答を期待したい。


>On 2010/03/18, at 0:40, TADASHI OMOTE wrote:

> こんにちは。
> 表(おもて) と言います。
>
> 初歩的な質問で恥ずかしいのですが、どなたかにご教授いただければと思い投稿させていただきます。
>
> (質問)
> LinkTreeを使って簡単なメニューを作ろうとしています。
> 単純にTreeでメニューを表示させ、クリックで指定画面へ遷移させるだけの簡単なものです。
> 「wicket-examples」を参考にして、とりあえずTreeを表示させるところまではできました。
> ソース的には、
>
> tree = new LinkTree("tree_menu",createTreeModel());
>  add(tree);
>
> で、
> protected TreeModel createTreeModel(){
>       List<Object> list01 = new ArrayList<Object>();
>       list01.add("Menu1"));
>       List<Object> list02 = new ArrayList<Object>();
>       list02.add("Menu1-1");
>       list02.add("Menu1-2");
>       list01.add(list02);
>       list01.add("Menu2");
>       return convertToTreeModel(list01);
> }
> private TreeModel convertToTreeModel(List<Object> list){
>       TreeModel model = null;
>       DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("ROOT");
>       add(rootNode, list);
>       model = new DefaultTreeModel(rootNode);
>       return model;
> }
> @SuppressWarnings("unchecked")
> private void add(DefaultMutableTreeNode parent, List<Object> sub){
>       for (Iterator<Object> i = sub.iterator(); i.hasNext();){
>               Object o = i.next();
>               if (o instanceof List){
>                       DefaultMutableTreeNode child = new DefaultMutableTreeNode("subtree");
>                       parent.add(child);
>                       add(child, (List<Object>)o);
>               }else   {
>                       DefaultMutableTreeNode child = new DefaultMutableTreeNode(o.toString());
>                       parent.add(child);
>              }
>      }
> }
> のような感じです。( ほとんど・・sampleのまんま・・ですが)
> ここで、(o instanceof List) でないNodeに onclick イベントを仕込んで、画面遷移をおこしたいのですが、
> どうやればよいのかわからず、はまっています。
>
> よろしくお願いいたします。
>
> _______________________________________________
> Wicket-ja-user mailing list
> Wicke****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user

---------------------------------------------------
矢野 勉(やの つとむ)
電子メール: t_yano****@me*****
---------------------------------------------------



Wicket-ja-user メーリングリストの案内
Back to archive index