Groovy + Click Framework

Groovy + Click Framework。こんな感じ。良い組み合わせだと思います。

気をつける点は、メンバ変数にpublicをつけること。つけないと、getter/setterしか生成されません。フレームワークのリフレクションが効きません。あと、overrideするメソッド、Clickに渡すメソッドは、型を付けておいたほうがいいです。

click.xml や web.xmlJava と同一です。

import net.sf.click.Page
import net.sf.click.control.*

class HomePage extends Page {
    public time = new Date()
    public myLink = new ActionLink()
    public msg
    public table = new Table()
    
    HomePage() {
        myLink.setListener(this, "onMyLinkClick")
        table.setClass(Table.CLASS_ITS)
        ["id", "name", "email", "investments"].each { table.addColumn(new Column(it)) }
    }
    void onRender() {
        table.setRowList([
            [id: 1, name: "yu", email: "a@b", investments:"hoge"],
            [id: 2, name: "koba", email: "c@d", investments:"fuga"]])
    }
    boolean onMyLinkClick() {
        msg = "ControlListenerPage#${hashCode()} object method <tt>onMyLinkClick()</tt> invoked."
        return true
    }
}