Domanda

Sto esaminando l'integrazione groovy-wicket e la mancanza di classi interne anonime sembra essere un problema quando si scrivono i gestori di eventi. Esiste un modo più efficace di scrivere questo codice

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"}
}
È stato utile?

Soluzione

Potrei sbagliarmi, ma non è questo ciò che WickeBuilder cerca di risolvere :

  

Implementa l'utilità Wicket Builder   un Groovy Builder per la costruzione   Alberi dei componenti Wicket.

     

Durante l'utilizzo del builder si costruisce   Alberi dei componenti più semplici e chiari   per il lettore, il driver originale era   il fatto che Groovy non lo permetta   classi interne anonime. porticina   si affida a metodi prioritari per   fornire funzionalità personalizzate per molti   Tipi di componenti Groovy può essere usato   per codificare le classi di pagine Wicket, ma ciascuna   la classe che viene sovrascritta richiede un nome   definizione di classe. Possibile, ma   goffo.

     

WicketBuilder simula questi   sostituisce con le chiusure denominate.   Le chiusure sono essenzialmente portatili   blocchi di codice. Sotto il cofano, il   builder crea classe dinamica   ignora ed esegue le chiusure quando   viene chiamato il metodo denominato.

     

[...]

Altri suggerimenti

Ermh .. Questo non sembra un " buono " alternativa, ma sembra essere l '"ufficiale" Alternativa interessante:

Groovy Alternatives to Inner Classes

In realtà non uso spesso Groovy, ma mi sono posto la stessa domanda qualche mese fa. ho provato diversi approcci

http: //rschmid.wordpress. com / 2009/05/03 / Anonymouse-interne-classi-in-groove /

Groovy 1.7 e versioni successive supportano classi interne anonime. Vedi groovy 1.7 note di rilascio .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top