Вопрос

Я изучаю интеграцию groovy-wicket, и отсутствие анонимных внутренних классов, по-видимому, является проблемой при написании обработчиков событий.Есть ли более простой способ написания этого кода

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"}
}
Это было полезно?

Решение

Возможно, я ошибаюсь, но разве это не то, что Плетенщик пытается решить:

Утилита Wicket Builder реализует простой конструктор для построения деревьев компонентов Wicket.

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

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

[...]

Другие советы

Эээ ... Это не похоже на "хорошо" альтернатива, но это, кажется, "официальный" Отличная альтернатива:

Groovy - альтернативы внутренним классам

Приведенный пример для groovy 1.7.x и wicket 1.4.x http://wash-inside-out.blogspot.com/2010/08/wicket-and-groovy-integration.html

На самом деле я не часто использую groovy, но несколько месяцев назад задавал мне тот же вопрос. я опробовал разные подходы

http: //rschmid.wordpress. ком / 2009/05/03 / Anonymouse-внутренние классы-в-заводной /

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top