伙计们,我有一个Web应用程序,我已经为相同资源的JSON和HTML表示重用了相同的路由,现在我们称之为/ foo/details.此页面链接,我们称之为/ bar/details.(所以,看/ bar/details你看到链接到 - >/foo/details).
当我从第一页到第二页时,一切正常.当我点击Chrome中的后退按钮时,原始页面呈现为JSON而不是HTML.如果我在浏览器中点击刷新,我会获得HTML表示而不是JSON.
这是我用来检测JSON与HTML的代码:
res.result.map { group =>
render {
case Accepts.Html() => Ok(views.html.groups.details(group))
case Accepts.Json() => Ok(Json.toJson(group))
}
}.getOrElse(NotFound)
Run Code Online (Sandbox Code Playgroud)
这是此模式的标准实现,它可以在任何地方使用,除非在某些情况下我在Chrome中使用后退按钮.
是否有一些我没有清除的值,或者我的页面正在使用Ajax做什么令人困惑Play让它在Json中呈现,或者Chrome可能正在缓存页面但缓存错误的接受标题?
我可以通过使用两种不同的路线来解决这个问题,一种用于Json,另一种用于Html,但我不喜欢,因为我觉得我放弃了.
任何人都只有在后退按钮中导致此行为的原因有任何想法吗?