2008-03-29
これは良い組合せ。そうか,groovycでクラスファイル作っちゃうから元がGroovyでも全然問題ないんだな。いいねー,Clickオモシロス。
#「Pageクラス程度だったら,Javaで書いてもそんな負担じゃないでしょ」というヤボは言っちゃダメ。:-D
というわけで,ちょっと試しに画面遷移などやってみた。
=== HomePage.groovy === class HomePage extends Page { public form = new Form(); private textField = new TextField(name:"name", label:"名前") HomePage() { form << textField textField.required = true form << new Submit("submit", "OK", this, "onOkClick") } boolean onOkClick() { if (!form.isValid()) return false def nextPage = context.createPage(NextPage) nextPage.text = textField.value //forward = nextPage は NG setForward(nextPage) return true; } static { // form << obj のおまじない Form.metaClass.leftShift = { delegate.add(it) } } } === NextPage.groovy === class NextPage extends Page { public backLink = new ActionLink() public text NextPage() { backLink.setListener(this, "onBackLinkClick") } boolean onBackLinkClick() { setRedirect HomePage return false } }
ところどころ「元はJavaだから」的なことを意識しないと行けないのが玉に瑕だけど,まあまあ良い感じ。
Groovyは,まだ内部クラスや無名クラスが使えないので,AutoCompleteTextFieldとかタイプセーフなアクションリスナの解決方法を模索しないといけない。そんでも,自分以外の人がメンテするなんてこと考えなければ,GroovyとClickの組合せはGood!
実際の所,IntelliJのGroovyサポートは他と比べて頭ひとつ抜き出てるしね。
裏を返せば,IntelliJ使わないんだったら,あんまりGroovyにこだわる事もないとも言える。:-P
ps.
Groovy使うんだったらGrailsが王道なんだけど,自分の目的*1に沿わないんだよね。いや,ホント,そんだけClickのオートレイアウトは便利なんだって。
あとGroovyの記述性もね。