如何在Play框架中实现POST-REDIRECT-GET

时间:2013-09-14 11:05:39

标签: scala playframework-2.0 post-redirect-get

假设我有两个控制器方法:Users.preInsert和Users.insert。 preInsert方法用于显示用户输入表单(GET),而insert方法负责实际插入(POST)或调用'insert'服务。 这是路线的样子:

GET    /users/add                           controllers.Users.preInsert(...)
POST    /users/add                           controllers.Users.insert(...)

那么如何重定向请求(POST到GET)而不会丢失从插入服务返回的错误消息等参数以及客户端输入的值,以便可以在条目表单中访问和显示它们。参数可能涉及一些复杂的对象。我已经使用缓存API实现了它,但我想知道是否有更好的方法。

2 个答案:

答案 0 :(得分:2)

这就是Form对象(http://www.playframework.com/documentation/2.1.1/ScalaForms)的确切目的。

我认为routes中存在错误,可能如下:

GET    /users/add                           controllers.Users.preInsert(...)
POST   /users/add                           controllers.Users.insert(...)

你应该明确地看一下form sample

答案 1 :(得分:0)

您无需将其重定向回preInsert操作,而是在insert检查开始时检查表单是否有错误,并且它已显示包含表单的视图(preInsert中使用的相同)。它在处理绑定失败

部分的doc mentioned by nico_ekito中进行了描述