セッション管理
セッション管理については特にscala版の特記事項は無い模様。つまり、Java版と同じらしい。 また、セッションをキャッシュとして使わないよう、playはキャッシュ機構を備えている。
フラッシュスコープとは
いきなりフラッシュスコープという耳慣れない言葉が出てくるが、以下に参考を示す。
例えば、フォームをサブミットし、その内容がエラーだった場合、エラーページにリダイレクトするが、その際のメッセージをエラーページに受け渡すためには、以下のいずれかを行わなければならない。
- エラーメッセージをパラメータとして受け渡す。
- エラーメッセージをセッションに保存し、エラーページにて表示した後にそれを消す。
フラッシュスコープを利用すると以下のような動作になるようだ。
- エラー内容をフラッシュスコープに保存する
- エラーページにリダイレクトする
- エラーページでエラー内容を表示する
- フラッシュスコープの内容は自動的に消える
セッションの使い方
play.mvc.ScalaControllerには、以下のような定義がある。
implicit def request = Request.current() implicit def response = Response.current() implicit def session = Session.current() implicit def flash = Flash.current() implicit def params = Params.current() implicit def renderArgs = RenderArgs.current() implicit def validation = Validation.current()
通常、コントローラは
object Application extends Controller { import views.Application._ case class User(name: String, addr: String) def index() = html.index("Your Scala application is ready!") }
などと記述されるが、このControllerは実はplay.mvc.packageにて「 type Controller = ScalaController」とされており、ScalaControllerのことになる。
つまり、上記コントローラコード中で、sessionを参照すると、これはSession.current()になる。Sessionは
おそらく、put(key: String, value: String)を呼び出せばセッションに名前付文字列を保持することができる。