播放Scala Post重定向获取模式 - 重定向到视图

时间:2017-06-20 05:56:07

标签: scala playframework

对于Play 2.5来说,这是一个菜鸟问题。

我有一个简单的Action(最终)从表中删除一个元素。 此操作由定义为POST的路由触发。

POST /delete/:id            @com.test.controllers.XController.delete(id: String)

当删除成功时,代码当前解析为名为“success”的视图(内部是带有自定义消息参数且在可选对象上的success.scala.html)。

Future.successful(Ok(success(Some("Item was deleted"), customObject)))

但是,用户仍然可以尝试按F5刷新页面,从而再次提交表单。为避免这种情况,一种选择是重定向到“成功”视图。

我不能,因为上帝的爱,弄清楚如何重定向到这个观点。您似乎只能通过反向路由或使用URL进行重定向。

1 个答案:

答案 0 :(得分:1)

如果您需要播放表单(link on spec),请先采取第一种方法: 你可以直接传递参数:

 val df = form().bindFromRequest()
 return redirect(routes.Application.somePlace(df.get("action"), 
 df.get("id")))

如果您不需要Scala表单,可以通过Redirect生成redirect

GET   /hello/:name          controllers.Application.hello(name)
// Redirect to /hello/Bob
def helloBob = Action {
    Redirect(routes.Application.hello("Bob"))    
}