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



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

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

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

这就是

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

而且我认为您的routes中存在错误,它可能看起来像:

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

您应该明确查看表单示例。

您不需要将其重定向回preInsert操作,而是在insert开始时检查表单是否有错误,并且它显示了包含表单的视图(与您在preInsert中使用的视图相同)。nico_ekito在处理绑定失败一节中提到的文档中对此进行了描述

最新更新