我有一个删除个人资料的列表页面, 如果个人资料被删除,我需要重定向到同一页面并显示一条消息"个人资料已删除"。
如果是普通表单,我可以使用Play Framework的@helper.form并在控制器中调用该操作。 如果是这样的话:
在我的动作方法中,我使用Redirect(controller.action).flashing("message" -> "some message")
,它运行正常。
如果我需要显示包含现有内容的页面,我也会使用Ok(views.html.profile("some message",filledForm))
,并且工作正常。
但是,由于这只是一个列表,我添加了一个按钮,然后从javascript执行ajax调用:
如果成功,我使用以下方式重定向:window.location.replace("/profile/prof_deleted");
我使用消息(/prof_deleted)
在个人资料模板中显示确认/错误。
但是,如果用户尝试重新加载页面,则会再次显示确认/错误,因为它已包含在网址中。
我需要传递消息,但我认为在这种情况下会话不是一个好选项,这里不会选择闪存,并且会始终显示url参数。
答案 0 :(得分:0)
没有意义,如果您使用AJAX发送删除对象的请求,为什么要执行公共页面重定向呢?
这个场景有两个更好的选择(我更喜欢第二个)
/profiles
然后在发送POST时删除对象并显示消息,否则只显示配置文件列表。success
状态下,只需使用JavaScript从HTML中删除项目,也可以使用JavaScript显示消息框,但不要重新加载整个页面。
profile_123