【问题标题】:Play2 and Flash Scope, why can't I print my message?Play2 和 Flash Scope,为什么我不能打印我的消息?
【发布时间】:2013-03-18 15:20:49
【问题描述】:

在我当前的控制器中,我正在传递一条如 docs 中所述的 Flash 消息

控制器:

def test(token: String) = Action {
        Ok(views.html.mobile.smsReview(smsReviewForm.fill(model), grades, smstoken.get.token))
        .flashing("success" -> Messages("sms.form.write.review"))
      }
  }

我的看法:

@(smsReviewForm: Form[SmsReview], grades: Seq[Grade], smstoken: String)(implicit request: RequestHeader)

...

@request.flash.get("success").getOrElse("HELLO!").map { msg =>
        <div class="alert alert-info">
            @msg
        </div>
    }

在视图中你好!是打印出来的,不是我的消息。但是,如果我检查 Chrome 中的标题,我的消息就在那里:

Content-Length:3596
Content-Type:text/html; charset=utf-8
Set-Cookie:PLAY_FLASH=success%3AHej%21+Skriv+din+rekommendation+nedan; Path=/; HTTPOnly

我错过了什么?

【问题讨论】:

    标签: scala playframework-2.1 flash-scope


    【解决方案1】:

    闪存范围用于将消息“闪存”到下一个请求。这主要在您重定向到另一个页面时使用。最常见的用例是表单帖子末尾的重定向。

    文档的第一部分说明了这一点:

    如果您必须跨多个 HTTP 请求保留数据,您可以将它们保存在 Session 或 Flash 范围内。 Session 中存储的数据在整个用户 Session 期间可用,而 Flash 范围中存储的数据仅对下一个请求可用。

    在您的情况下,您可以简单地将消息直接传递给视图,因为您在呈现视图时有可用的消息。

    【讨论】:

      【解决方案2】:

      来自维基百科上的HTTP Cookie 页面

      Set-Cookie 是浏览器存储 cookie 并在以后的请求中将其发送回服务器的指令...

      在响应中看到SET_COOKIE 标头表明您向服务器发出的后续请求将发送cookie,并且呈现的视图将可以访问flash 范围内的数据(前提是您将(implicit flash: Flash) 添加到模板函数定义中)。

      正如上面提到的EECOLOR,您只需将数据作为参数传递给您的视图。在这种情况下不需要使用 flash 示波器。

      下面我有适配器你的代码将消息String作为参数传递给视图。

      控制器

      def test(token: String) = Action {
        Ok(views.html.mobile.smsReview(smsReviewForm.fill(model), grades, smstoken.get.token, "sms.form.write.review"))
      }
      

      查看

      @(smsReviewForm: Form[SmsReview], grades: Seq[Grade], smstoken: String, message: String)(implicit request: RequestHeader)
      ...
      <div class="alert alert-info">@message</div>
      

      【讨论】:

        猜你喜欢
        • 2014-05-08
        • 1970-01-01
        • 2016-02-01
        • 1970-01-01
        • 2022-06-17
        • 2016-05-06
        • 1970-01-01
        • 2016-06-20
        • 2022-01-25
        相关资源
        最近更新 更多