【发布时间】:2015-08-07 17:19:30
【问题描述】:
我有一个可用语言的下拉选项。目前,点击一种语言会映射到控制器中的一个方法,该方法会使用所选语言更新 Play Session(这是一个 cookie)并返回索引页面。
查看:
<a href="@routes.Application.setLanguage("en")">English</a>
控制器:
def setLanguage(language: String): Action[AnyContent] = Action { implicit request =>
val updatedSession = request.session + (("lang", language))
Redirect(routes.Application.index()).withSession(updatedSession)
}
如您所见,我重定向到索引页面,它工作正常。但是,由于语言选择在我的页面上始终可用,因此可以从 /resource1、/resource2、/resource3 等单击它,我想刷新该特定视图而不是返回主页。我不能简单地在控制器中获取 request.uri 并刷新它指向的任何内容,因为 setLanguage() 映射到它自己的路由,所以我的请求 URI 始终是 /language?lang=whatever。
那么,我怎么知道在 /language 上调用 GET 之前,客户端在 /items 上,所以我可以重新加载项目页面而不是让他返回主页?我是否应该发送带有资源作为参数的 GET 请求(例如 ?lang=en&location=items)以知道要呈现哪个页面?我应该发出 ajax 请求并在成功时调用 window.location.reload() 吗?我什至需要去服务器还是可以简单地从客户端手动更新 PLAY_SESSION cookie?
我使用的是 Play 2.3.7。
【问题讨论】:
标签: javascript ajax scala cookies playframework