2009-09-18 8 views
3

Je suis à la recherche de 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 at-il une façon d'écrire groovy ce codeClasse interne anonyme dans groovy

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"} 
} 

Répondre

1

Je peux me tromper, mais ne serait-ce que les WickeBuilder tente de résoudre:

L'utilitaire Wicket Builder implémente G Roovy Builder pour la construction de arbres de composants de guichet.

Tout en utilisant le constructeur fait construire arbres composants plus facile et plus clair au lecteur, le pilote d'origine était le fait que Groovy ne permet pas classes internes anonymes. Wicket repose sur des méthodes de remplacement à fournir des fonctionnalités personnalisées pour de nombreux types de composants . Groovy peut être utilisé pour coder les classes de page Wicket, mais chaque classe qui a été remplacée a besoin d'une définition de classe nommée. Possible, mais clunky.

Le WicketBuilder simule ces remplacements avec des fermetures nommées. Les fermetures sont essentiellement des blocs de code portatifs . Sous le capot, le générateur crée des remplacements dynamiques de classe et exécute les fermetures lorsque la méthode nommée est appelée.

[...]

+0

Cela semble être la bonne réponse. Hélas, il semble que les projets n'aient pas connu beaucoup d'activité ces derniers temps. Quoi qu'il en soit, ce problème affecte sûrement d'autres cadres. Il est question d'implémenter des classes internes dans la future version de groovy. – Dan

+0

En effet, les classes internes anonymes Groovy sont sur la feuille de route pour 1.8 http://docs.codehaus.org/display/GroovyJSR/Groovy+Roadmap –

+1

Les classes internes anonymes sont dues dans Groovy 1.7 –

1

Ermh .. Cela ne ressemble pas à un « bon » alternative, mais il semble être l'alternative Groovy « officielle »:

Groovy Alternatives to Inner Classes

+0

Je suis au courant du lien, mais sans succès en suivant les instructions. – Dan

0

Groovy 1.7 et au-dessus de soutien des classes internes anonymes. Voir groovy 1,7 release notes.

+0

J'utilise grails et groovy 1.6.4 est toujours livré avec la version 1.2 M3 des grials. Existe-t-il un moyen de faire en sorte que les grails utilisent une nouvelle version de groovy? – Dan

Questions connexes