というわけでやってみた

ScalaでClickのページクラスを簡単に書けるようにするための簡単なアダプタを作ってみたところ、こんな感じで書けるようになりました。

package jp.sf.amateras.click.scala.page

import jp.sf.amateras.click.scala._

class HelloPage extends ClickScalaPage {

  @Model
  var message: String = ""

  val form = new Form("form"){
    val text = new TextField("name")
    val submit = new Submit("submit", { source =>
      message = "Hello, %s!".format(text.getValue())
      true
    })
  }
}

ルールはこんな感じです。

  • ページクラスのフィールドに定義したコントロールは自動的にPage#addControl()される
  • ページクラスのフィールドに定義した@Modelアノテーション付きのフィールドは自動的にPage#addModel()される
  • フォームのフィールドに定義したフィールドは自動的にForm#add()される

これならありかも。真面目にやってみようかな。