【问题标题】:Play framework flash scope does not clear on ajaxajax 上的播放框架 flash 范围不明确
【发布时间】:2014-06-05 00:38:27
【问题描述】:

如果我有一个控制器方法设置 flash.success("some.i18n.key");我渲染了一个通过 ajax 加载的页面,该页面不会从 Flash 中删除。即使我已经将内容呈现到屏幕上(html 加载到我的 ajax 帖子的成功处理程序中的 div 中),我访问的下一页仍然在 flash 中显示成功消息。使用普通表单发布的页面,非 ajax)不会发生此问题。知道发生了什么吗?

进一步调查似乎这可能是某种竞争条件。当我做一个正常的帖子并返回 FLASH cookie 时,它​​会立即过期,并且在下一次请求时它不会被发送回服务器。在 AJAX 发布和后续请求的情况下,cookie 被发送回服务器。

【问题讨论】:

    标签: ajax playframework


    【解决方案1】:

    为一个重定向保留闪存值。如果您在方法结束时在控制器中调用 render ,则不会发出重定向,因此值将可用于下一个请求。为避免这种情况,您可以选择:

    1. 在方法中使用 renderArgs 将值传递给视图
    2. 在方法结束时,不要调用 render 而是调用控制器的另一个方法,因此您将发出重定向而不是直接渲染。

    【讨论】:

    • 谢谢,只是在成功时渲染,而不是我们通常做的重定向。认为这是因为 ajax。
    • 有没有办法在渲染期间/之后简单地 .clear() flash。这样,我使用直接渲染还是重定向都没有关系。
    【解决方案2】:

    自从玩 2 之后,他们稍微改变了闪烁,而不是 2 张地图(传入、传出),只有一张。

    我最终做的是打电话:

    @flash.clear()
    

    在 Flash 消息被渲染之后(在视图中)。这样,无论您使用直接渲染或重定向的天气如何,您都可以确保它们只渲染一次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 2013-02-20
      • 2016-12-23
      相关资源
      最近更新 更多