!PlayFrameworkメモ 何度目かのPlayFramework入門.とりあえずsbtを用意した状態からスタート. ::プロジェクト作成 sbt new playframework/play-scala-seed.g8 プロジェクト名は適当に決める. プロジェクト名と同名のディレクトリが作られるので,そこに移動. ::HelloWorldする conf/routes にURLと,そのURLにアクセスしたときに実行したいメソッドの対応を書く. たとえば, GET /my-hello controllers.MyHello.hello とか書く. で,メソッドを用意.クラスはappの下に用意.今回は app/controllers/MyHello.scala. 中身は, package controllers import javax.inject._ import play.api.mvc._ import play.api.data._ import play.api.data.Forms._ class MyHello @Inject()(mcc: MessagesControllerComponents) extends MessagesAbstractController(mcc){ def hello() = Action { implicit request : MessagesRequest[AnyContent] => Ok(views.html.myhello("My Hello World", "miyo")) } } とか.ここで,views.html.myhelloは,app/views/myhello.scala.html に 定義する. 中身は, @(mesg1: String, mesg2: String) MyHello @mesg1 from @mesg2
とか.HTMLにScalaを埋め込んだもの. 必要があれば,@import で,Scalaのimport文が書ける. @()の中で定義した変数がScalaから引き渡されて,html中で使用できる.
  • mesg1.length + mesg2.length = @(mesg1.length + mesg2.length)
  • は,
  • mesg1.length + mesg2.length = @(@mesg1.length + @mesg2.length)
  • mesg1.length + mesg2.length = @mesg1.length + @mesg2.length
  • ではないので注意. ::実行する sbt run で実行して,ブラウザで http://localhost:9000/my-hello にアクセス.エラーがでたら適宜修正. ブラウザでリロードすると裏でコンパイルプロセスが走って,再実行される. ::本来の開発の順番は 逆がよい. ビューとアクションを用意してからrouteを書くみたい.あたり前か.