Anonyme classe intérieure en groovy
-
10-07-2019 - |
Question
Je suis en train de regarder dans l'intégration groovy-wicket et le manque de classes internes anonymes semble être un problème lors de l'écriture des gestionnaires d'événements. Y a-t-il une manière plus groovy d’écrire ce code
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"}
}
La solution
Je peux me tromper, mais n'est-ce pas ce que WickeBuilder tente de résoudre :
L'utilitaire Wicket Builder implémente un constructeur de construction pour la construction Arborescence des composants du guichet.
Tout en utilisant le constructeur rend la construction Arbres de composants plus faciles et plus clairs Pour le lecteur, le pilote d'origine était le fait que Groovy ne permet pas classes internes anonymes. Guichet repose sur des méthodes primordiales pour fournir des fonctionnalités personnalisées pour beaucoup Types de composants. Groovy peut être utilisé pour coder des classes de page Wicket, mais chaque la classe qui est remplacée a besoin d'un nom définition de classe. Possible, mais maladroit.
Le WicketBuilder simule ces remplace avec des fermetures nommées. Les fermetures sont essentiellement portables blocs de code. Sous le capot, le Le constructeur crée une classe dynamique annule et exécute les fermetures lorsque la méthode nommée est appelée.
[...]
Autres conseils
Ermh .. Cela ne ressemble pas à un "bon" alternative, mais il semble que ce soit le "fonctionnaire" Alternative Groovy:
Exemple d'utilisation de groovy 1.7.x et du guichet 1.4.x http://wash-inside-out.blogspot.com/2010/08/wicket-and-groovy-integration.html
En fait, je n’utilise pas souvent de groovy, mais j’ai posé la même question il ya quelques mois. J'ai essayé différentes approches
http: //rschmid.wordpress. com / 2009/05/03 / anonymouse-in-classes-en-groovy /
Groovy 1.7 et les versions ultérieures prennent en charge les classes internes anonymes. Voir le groovy 1.7 notes de publication .