我正在研究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"}
}
答案 0 :(得分:1)
嗯..这看起来不像是一个“好”的选择,但它似乎是“官方”Groovy的选择:
答案 1 :(得分:1)
我可能错了,但这不是WickeBuilder试图解决的问题:
Wicket Builder实用程序实现 用于构建的Groovy构建器 Wicket组件树。
使用构建器进行构建 组件树更容易,更清晰 给读者,原来的司机是 Groovy不允许的事实 匿名内部类。便门 依赖于重写方法 为许多人提供自定义功能 组件类型。可以使用Groovy 编写Wicket页面类,但每个 被覆盖的类需要命名 类定义。可能,但是 笨重。
WicketBuilder模拟这些 覆盖命名的闭包。 闭包基本上是便携式的 代码块。在引擎盖下, 构建器创建动态类 覆盖并运行闭包时 调用命名方法。
[...]
答案 2 :(得分:1)
了解groovy 1.7.x和wicket 1.4.x http://wash-inside-out.blogspot.com/2010/08/wicket-and-groovy-integration.html
的例子答案 3 :(得分:0)
我实际上并不经常使用常规,但几个月前问我同样的问题。我尝试了不同的方法
http://rschmid.wordpress.com/2009/05/03/anonymouse-inner-classes-in-groovy/
答案 4 :(得分:0)
Groovy 1.7及以上版本支持匿名内部类。见groovy 1.7 release notes。