@ session.get无法在scala html模板中工作

时间:2018-03-20 02:28:23

标签: scala playframework-2.6

我的@ session.get(“id”)在下面没有工作。登录系统后,我在控制器中使用.withSession(“id” - > id)设置会话值id。有没有办法让这个session.get工作?

main.scala.html

@(title:String)(内容:Html)

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" cantent="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimun-scale=1.0, user-scalable=no" />
    <title>@title</title>

</head>

<body>
  <div class="main container">
    <div class="navigation container">
      <div class="logo container">
        <div class="user">@session.get("id")</div>
        <div class="separator"></div>
    </div>
    <div class="separator"></div>
    <ul>
      <li class="user"><a href="@routes.AdmnTask.user()">USER</a></li>
      <li class="code"><a href="@routes.AdmnTask.code_list()">CODE</a></li>
           </ul>
  </div>
  <div class="header container">
    <div class="left"></div>
    <a class="right" href="#all-menu"></a>
  </div>
  <div id="mainnav" class="mainnav">
        @content
  </div>
</div>
</body>

找不到此原因:值会话错误。即使在添加

之后也没有找到相同的问题
@()(implicit session: play.api.mvc.Session)

这是我的 index.scala.html ,它成为我模板的基本结构。

@*
 * This template takes a single argument, a String containing a
 * message to display.
 *@
@(message: String)

@*
 * Call the `main` template with two arguments. The first
 * argument is a `String` with the title of the page, the second
 * argument is an `Html` object containing the body of the page.
 *@
@main("Welcome") {

    @*
     * Get an `Html` object by calling the built-in Play welcome
     * template and passing a `String` message.
     *@
    @message

}

请帮忙!

1 个答案:

答案 0 :(得分:1)

您需要明确地将会话传递给您的模板:

来自您的操作的

vies.htlm.index(消息,会话)。然后进一步将此会话传递给您的main.scala.html。

在index.scala.html中,从session参数中删除隐式。

或者,在index.scala.html以及main.scala.html中传递(隐式请求:Request [T])。

@(message: String)(implicit request: Request[T]) -> index
@(title: String)(content: Html)(implicit request: Request[T]) -> main

您可以访问以下会话:

request.session.get("key")

这将是必要的。