3

我正在研究 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"}
}
4

5 回答 5

1

Ermh .. 这看起来不是一个“好的”替代方案,但它似乎是“官方”的 Groovy 替代方案:

内部类的 Groovy 替代方案

于 2009-09-18T00:45:17.437 回答
1

我可能错了,但这不是WickeBuilder试图解决的问题:

Wicket Builder 实用程序实现了一个用于构建 Wicket 组件树的 Groovy Builder。

虽然使用构建器可以让读者更轻松、更清楚地构建组件树,但最初的驱动因素是 Groovy 不允许匿名内部类。Wicket 依赖于重写方法来为许多组件类型提供自定义功能。Groovy 可用于编写 Wicket 页面类,但每个被覆盖的类都需要一个命名类定义。可能,但笨重。

WicketBuilder 使用命名的闭包模拟这些覆盖。闭包本质上是可移植的代码块。在后台,构建器创建动态类覆盖并在调用命名方法时运行闭包。

[...]

于 2009-09-18T00:57:41.127 回答
1

groovy 1.7.x 和 wicket 1.4.x 的完整示例http://wash-inside-out.blogspot.com/2010/08/wicket-and-groovy-integration.html

于 2010-09-01T06:11:39.550 回答
0

我实际上并不经常使用 groovy,但几个月前问了我同样的问题。我尝试了不同的方法

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

于 2009-09-18T19:29:24.273 回答
0

Groovy 1.7 及更高版本支持匿名内部类。请参阅 groovy 1.7发行说明

于 2009-10-04T22:04:13.050 回答