ajax上的Play框架flash范围不清楚



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

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

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

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

由于播放2,他们稍微改变了闪烁,而不是2个贴图(传入、传出),只有一个。

我最终要做的是打电话给:

@flash.clear()

就在flash消息渲染之后(在视图中)。这样,无论使用直接渲染还是重定向,都可以确保它们只渲染一次。

最新更新