【发布时间】:2019-07-05 05:47:04
【问题描述】:
我想在 Play Framework 中异步管理来自表单组件的 POST 请求。特别是,我想在已经返回 Future 的处理程序中使用表单参数。
我知道,为了处理 POST 请求,我必须使用在输入中获取 MessagesRequest[AnyContent] 实例的重载,例如:
def action = Action { implicit request: MessagesRequest[AnyContent] =>
Ok(views.html.view( ... ))
}
无论如何,为了管理一个 Future,我必须使用 Action.async 方法,但我没有发现此方法的任何重载接受输入 MessagesRequest[AnyContent] 的实例。
我已经尝试使用简单的Request[AnyContent] 实例来强制转换处理程序,但在这种特殊情况下它没有与 Play 框架基础架构集成。
从the documentation 看来,Action 和Action.async 在本质上都是异步的,Action.async 只是一个辅助工具,可以以非阻塞方式编写代码,这正是我想要实现的目标。
根据我的理解,返回一个非异步结果就足够了,该结果将被包装在 Future 中,但是有没有办法返回 Future,处理来自 Play 表单的 MessagesRequest[AnyContent]实施?
【问题讨论】:
-
你可以在未来包装``` def action = Action.asyc { 隐式请求:MessagesRequest[AnyContent] => Future{ Ok(views.html.view( ... ))} } ```
标签: scala playframework