Frage

Ich bin auf der Suche in die groovy-Pförtchen Integration und den Mangel an anonymen inneren Klassen scheint ein Problem zu sein, wenn die Ereignishandler zu schreiben. Gibt es eine Möglichkeit, diesen groovier Code zu schreiben

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"}
}
War es hilfreich?

Lösung

Ich kann mich irren, aber nicht das, was die WickeBuilder versucht zu lösen :

  

Die Wicket Builder Utility Arbeitsgeräte   ein Groovy-Builder für den Bau   Wicket Component Bäume.

     

Während der Bauherr mit macht Gebäude   Komponente Bäume einfacher und klarer   den Leser, war der ursprüngliche Treiber   die Tatsache, dass Groovy nicht erlaubt   anonyme innere Klassen. Gatter   beruht auf Methoden überwiegender   bieten kundenspezifische Funktionalität für viele   Komponententypen. Groovy kann verwendet werden,   Wicket Seite Klassen zu codieren, aber jeder   Klasse, die außer Kraft gesetzt wird, muss eine benannte   Klassendefinition. Möglich, aber   klobig.

     

Die WicketBuilder simuliert diese   überschreibt mit dem Namen Closures.   Verschlüsse sind im Wesentlichen tragbar   Codeblöcke. Unter der Haube des   Builder erstellt dynamische Klasse   Überschreibungen und führt die Verschlüsse, wenn   die benannte Methode aufgerufen wird.

     

[...]

Andere Tipps

Ermh .. Das sieht nicht wie eine „gute“ Alternative, aber es scheint, die „offizielle“ Groovy Alternative zu sein:

Groovy Alternativen zu Inneren Klassen

Unser Fahrzeug Beispiel für groovy 1.7.x und 1.4.x Wicket http://wash-inside-out.blogspot.com/2010/08/wicket-and-groovy-integration.html

Ich benutze eigentlich nicht oft stark, aber habe mich gebeten, die gleiche Frage vor einigen Monaten. Ich habe versucht, aus verschiedenen Ansätzen

http: //rschmid.wordpress. com / 2009/05/03 / anonymouse-Innenklassen-in-groovy /

Groovy 1.7 und höher unterstützt anonyme innere Klassen. Siehe groovy 1.7 Release Notes .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top