質問

groovy-wicketの統合を検討していますが、イベントハンドラを作成する際に匿名の内部クラスがないことが問題のようです。 このコードを作成するよりグルーヴィーな方法があります

import org.apache.wicket.PageParameters
import org.apache.wicket.markup.html.basic.Label
import org.apache.wicket.markup.html.link.Link
import org.apache.wicket.markup.html.WebPage


/**
 * Homepage
 */
class HomePage extends WebPage {


    public HomePage(final PageParameters parameters) {

        // Add the simplest type of label
        add(new Label("message", "Wicket running!"));   
        def link1 = new ClickHandler("link1") //in java, defined inline
        add(link1);
    }   
}

class ClickHandler extends Link{

    ClickHandler(String id) {
        super(id);
    }

    void onClick(){println "Hi"}
}
役に立ちましたか?

解決

間違っているかもしれませんが、これは WickeBuilder が解決しようとしていることではありません:

  

Wicket Builderユーティリティは、   構築するためのGroovy Builder   Wicketコンポーネントツリー。

     

ビルダーを使用すると、ビルドが行われます   コンポーネントツリーがより簡単で明確に   読者にとって、元のドライバーは   Groovyが許可しないという事実   匿名の内部クラス。改札   メソッドのオーバーライドに依存する   多くのユーザーにカスタム機能を提供します   コンポーネントの種類。 Groovyを使用できます   Wicketページクラスをコーディングするが、それぞれ   オーバーライドされるクラスには、名前付きの   クラス定義。可能ですが、   不器用。

     

WicketBuilderはこれらをシミュレートします   名前付きクロージャーでオーバーライドします。   クロージャーは、本質的にポータブルです   コードブロック。ボンネットの下、   ビルダーは動的クラスを作成します   次の場合にクロージャーをオーバーライドして実行します   名前付きメソッドが呼び出されます。

     

[...]

他のヒント

Ermh ..これは「良い」とは思えません。代替案ですが、「公式」のようです。 Groovyの代替:

Groovyの内部クラスの代替

iは実際にはgroovyを頻繁に使用しませんが、数か月前に同じ質問をしました。さまざまなアプローチを試しました

http://rschmid.wordpress。 com / 2009/05/03 / anonymouse-inner-classes-in-groovy /

Groovy 1.7以降は、匿名の内部クラスをサポートしています。 groovy 1.7 リリースノートを参照してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top