Classe interna anonima in groovy
-
10-07-2019 - |
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"}
}
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:
Esempio completo di groovy 1.7.xe wicket 1.4.x http://wash-inside-out.blogspot.com/2010/08/wicket-and-groovy-integration.html
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 .