Play Framework 2.8をIntelliJで使おうとしてハマったのでメモ。
今回はIntelliJ関係ないけど。
問題
PlayFrameworkでリクエストパラメータの追加のしかたがわからない。
とりあえずHello Worldは動いた。
さて、どうやってリクエストパラメータを追加するか。
あと、viewsの方でもどうやって変数を使うか。
解決法
リクエストパラメータを追加する方法は2通りある。
メソッドシグネチャにパラメータ追加
まずは、コントローラ(HomeController)のメソッドシグネチャに引数を追加する方法。
def hello(name: String) = Action { implicit request: Request[AnyContent] => ... }
name: Stringがリクエストパラメータ。
これに対応して、conf/routesファイルに設定
GET /hello controllers.HomeController.hello(name: String)
設定はこれでok、あとは/helloをリクエストする際にリクエストパラメータがあればよろし。
http://localhost:9000/hello?name=MyName
という感じ。
getQueryStringを使う
もう一つの方法は、動的にAPIから取得する方法。
HelloController#profile内で、
val name: Option[String] = request.getQueryString("name")
ここではnameはオプション型になるので、直接Stringで扱いたければ、
val name: String = request.getQueryString("name").getOrElse("")
で直接値が取れる(美しくないけど)。
この方法はrouteとかに設定は不要。
viewに変数を渡す
hogehoge.views.htmlで変数を使うには、最初の行に変数宣言をする。
@(name: String)
デフォルト値とかも大丈夫。
@(name: String, option: String = "defaultValue")
ソース内での変数の利用は、アットマークをつける。
@name
コントローラからは引数指定で行ける。
Ok(views.html.hello("myname"))
匿名
画面が真っ暗、でもカーソルは出てる状況。
探して、ここにたどり着きました。
パスワード入力で、復活!
修理に出す寸前でした。ホントにありがとう!