Scala Play 2.0(2) MVCのルーティングとコントローラ

イランがアルゼンチン相手に頑張ってるなー。前半0-0で折り返し。

まあ、今回もこれのハンズオンです。

だけど、俺ってばgetBytes思い出すのにどれだけ時間かけてんだよと。。。

conf/routesファイルに

GET    /sample1                controllers.SampleController.sample1

GET    /sample2                controllers.SampleController.sample2

な感じで書くと、そのメソッド、コンテキストでController, Actionが呼ばれますよと。

 object SampleController extends Controller {

  def sample1 = Action {

  ...

}

  def sample2 = Action ...

 こんな感じ。request引数もこんな感じ。

def sample1 = Action { request =>

 implicitで暗黙引数を使ってこんな感じも可能。

def say = Action { implicit request =>
   Ok(greeting("Hello"))
}
private def greeting(say: String)(implicit req: RequestHeader) = say + "," + req.remoteAddress 

 で、次のヘルパ関数を使わずにSimpleResultを使ったとこではまった。

最初、SimpleResultコンストラクタの引数がおかしいというエラーがでたが、これは単純にカンマを忘れてた凡ミス。次に、Enumeratorが見つからないいわれたけど、これは

import play.api.libs.iteratee.EnumeratorすればOK。で、最後のEnumeratorのエラーが

type mismatch; found : play.api.templates.HtmlFormat.Appendable (which expands to) play.api.templates.Html required: 

 Array[Byte]

 ええ、結局は.toString().getBytes()しただけなのだけど、1、2時間はまってもたorz。

あとは来週に。

アルゼンチン戦後半観て寝ます。