2009-09-18 2 views
3

Я изучаю интеграцию с groovy-wicket и отсутствие анонимных внутренних классов, кажется, проблема при написании обработчиков событий. Есть groovier способ написания этого кодаАнонимный внутренний класс в 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"} 
} 

ответ

1

Я могу ошибаться, но это не то, что WickeBuilder пытается решить:

утилита Калитка Builder реализует а^roovy Builder для построения Wicket Component trees.

При использовании строитель делает построение компонентов деревьев проще и понятнее читателю, оригинальный драйвер был тот факт, что Groovy не позволяет анонимные внутренние классы. Wicket опирается на методы переопределения на , которые предоставляют настраиваемые функциональные возможности для многих типов . Groovy можно использовать для кодирования классов страниц Wicket, но для каждого переопределенного класса требуется определение класса . Возможно, но clunky.

WicketBuilder имитирует эти переопределения с именованными закрытиями. Закрытие, по существу, переносится кодовые блоки. Под капотом построитель создает динамический класс переопределяет и запускает замыкания, когда вызывается названный метод.

[...]

+0

Кажется, это правильный ответ. Увы, похоже, что в последнее время проекты не видели большой активности. Во всяком случае, эта проблема, безусловно, влияет и на другие структуры. Существует разговор о внедрении внутренних классов в будущую версию groovy. – Dan

+0

Действительно, Groovy анонимные внутренние классы включены в Дорожную карту для 1.8 http://docs.codehaus.org/display/GroovyJSR/Groovy+Roadmap –

+1

Анонимные внутренние классы должны быть в Groovy 1.7 –

1

Ermh .. Это не выглядит как «хороший» вариант, но это, кажется, «официальный» Groovy альтернатива:

Groovy Alternatives to Inner Classes

+0

Я знаю ссылку, но не имел никакого успеха в соответствии с инструкциями. – Dan

0

Groovy 1.7 и выше поддержки анонимных внутренних классов. См. Groovy 1.7 release notes.

+0

Я использую grails и groovy 1.6.4, все еще в комплекте с версией муравьев 1.2 M3. Есть ли способ заставить Grails использовать новую версию groovy? – Dan

Смежные вопросы