11

私はPlayFramework2.0(Scalaを使用しています)を初めて使用し、セッションについて質問があります。

私はRubyonRailsのバックグラウンドを持っているので、RubyonRailsに関してPlayFrameworkで学んだことすべてを考える傾向があります。

それを念頭に置いて、ビューにいる間にセッションに保存されているものを呼び出す方法はありますか?

セッションに「hello」->「world」が保存されている場合、@ session.get( "hello")のようなことを実行して、ビューで「world」を使用できるようにしたいと思います。これは可能ですか?

私が見るもう1つのオプションは、コントローラーの変数に値を格納し、OK(var)のようなことを実行してビューに渡すことですが、特に変数を増やし始めると、その方法はちょっと不格好に見えます。

ありがとう!

4

3 に答える 3

22

PlayのセッションはCookieに保存され、実際にはクロスリクエストデータ用です。それが必要な場合は使用できます@session.get("hello")が、実際に必要なのは、パラメーターとして指定しなくても、コントローラーからテンプレートにデータを渡す方法です。その場合は、ここでその質問に対する非常に詳細な回答を参照してください: https ://stackoverflow.com/a/9632085/77409

于 2012-06-05T03:11:49.313 に答える
11

はい@session.get("hello")、テンプレートで使用できますが、Scalaコントローラーでテンプレートを使用する場合は、テンプレートの先頭に「session」という名前の暗黙のパラメーターを少なくとも指定する必要があるようです。

@()(implicit session: play.api.mvc.Session) 

また、スコープもあります。これは、1つのリクエストに対してのみ有効であり、署名されていないこととflashは異なります。sessionそのため、エラー/infメッセージを転送するためだけに最もよく使用されます。

セッションとフラッシュスコープのドキュメントを参照してください

最後に、各テンプレートは単なるScala関数であるため、コントローラーからアクションを呼び出してセッションデータを取得することもできます。

于 2012-06-04T22:04:51.037 に答える
-3

urプレイテンプレートでセッションを明確に呼び出すことができます。

このコードを試してください-ビューで機能します:

$session.session_variable_name;
于 2013-04-03T06:27:11.543 に答える