Pregunta

Estoy investigando la integración de wicket maravilloso y la falta de clases internas anónimas parece ser un problema al escribir los controladores de eventos. ¿Hay alguna forma más genial de escribir este código?

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"}
}
¿Fue útil?

Solución

Puedo estar equivocado, pero ¿no es esto lo que WickeBuilder intenta resolver :

  

La utilidad Wicket Builder implementa   un Groovy Builder para construir   Árboles de componentes de Wicket.

     

Mientras usa el constructor hace que la construcción   Árboles componentes más fáciles y más claros   para el lector, el controlador original era   el hecho de que Groovy no permite   Clases internas anónimas. Postigo   se basa en métodos de anulación para   Proporcionar funcionalidad personalizada para muchos   Tipos de componentes. Groovy puede ser usado   para codificar clases de página de Wicket, pero cada   la clase que se anula necesita un nombre   definición de clase Posible, pero   torpe.

     

El WicketBuilder simula estos   anula con cierres nombrados.   Los cierres son, esencialmente, portátiles.   bloques de código Debajo del capó, el   el constructor crea una clase dinámica   anula y ejecuta los cierres cuando   se llama al método nombrado.

     

[...]

Otros consejos

Ermh .. Esto no se ve como un "bueno" alternativa, pero parece ser el "oficial" Alternativa maravillosa:

Groovy Alternatives to Inner Classes

en realidad no uso Groovy con frecuencia, pero me hizo la misma pregunta hace unos meses. probé diferentes enfoques

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

Groovy 1.7 y superior admiten clases internas anónimas. Ver groovy 1.7 notas de la versión .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top