[Wicket-ja-user 311] Re: コンポーネントにadd()したコンポーネントの一覧を取得する方法についての質問

Back to archive index

Tsutomu Yano benbr****@mac*****
2009年 3月 1日 (日) 17:39:38 JST


矢野です。

 MarkupContainerクラスにvisitChildrenというメソッドがあります。これにComponent.IVisitorインスタンスを
渡すと、visitChildrenを呼び出した対象コンポーネントの、すべての子要素(孫も含めて)を再帰的に走査して、
ひとつひとつの子コンポーネントごとにComponent.IVisitorのcomponentメソッドを呼び出してくれます。


target.visitChildren(new Component.IVisitor<Component>() {
    Object component(Component c) {
        //targetの子要素や孫要素すべてについて、再帰的にこの
        //メソッドが呼び出される。パラメータcに現在処理中のコンポーネントが
        //わたされる。
    }
}


 こんな感じですね。一覧を作るのがあとで処理をすることが目的であれば、一覧を作るまでもなく、component
メソッド内に処理を書けばよいわけです。再起処理を自分で書く必要もないです。
 一覧リストが欲しいのであれば、Listを作っておいて、componentメソッドの中でListにaddするとよいでしょう。

 componentメソッドがComponent.IVisitor.CONTINUE_TRAVERSAL(nullと同義です)以外を返すか、すべてのコン
ポーネントを走査すると処理が終わります。


 直接の子コンポーネントだけを取りたいときには、iteratorメソッドを使うと良いです。ただしこちらは再帰的
には検索してくれません。


On 2009/03/01, at 15:57, Hoso s wrote:

>
>  こんにちは、細川と申します。
>  
>  Wicketでアプリケーションを作っていて、とあるコンポーネントに追加されたコンポーネントの一覧を取得したいのですが、どのような方法がありますでしょうか?
>  
>  実際にはWebPageにadd()されたコンポーネントの(WebPage直下から追加されたコンポーネントを再帰的に検索した)一覧を取得したいと思っています。なので、任意のMarkupContainerがあれば再帰的にadd()したコンポーネントを取得できると考えたのですが。
>  
>  MarkupContainerにはget(String)で指定したコンポーネントを取得できるようですが、追加されたコンポーネントの一覧を取得するためのメソッドが無いようなので質問させていただきました。なにか他のクラスを経由して一覧を取得する方法などがあるのでしょうか?
>  
>  よろしくお願いします。
>
> 【映画】007、メリケン・・話題の映画一挙紹介!この冬どれを観る? 話題の映画一挙紹介!この冬どれを観る?_______________________________________________
> Wicket-ja-user mailing list
> Wicke****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user

---------------------------------------------------
矢野 勉(やの つとむ)
電子メール:benbrand_at_mac.com
---------------------------------------------------




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