我正在尝试使用DynamicForm提取发送ajaxly($ .ajax(...))的post params:
new DynamicForm().bindFromRequest()
我收到了这个错误:
Caused by: java.lang.RuntimeException: There is no HTTP Context available from here.
at play.mvc.Http$Context.current(Http.java:27) ~[play_2.9.1.jar:2.0.4]
at play.mvc.Controller.request(Controller.java:28) ~[play_2.9.1.jar:2.0.4]
at play.data.Form.requestData(Form.java:87) ~[play_2.9.1.jar:2.0.4]
at play.data.DynamicForm.bindFromRequest(DynamicForm.java:46) ~[play_2.9.1.jar:2.0.4]
at controllers.Login$$anonfun$login$1.apply(Login.scala:19) ~[classes/:2.0.4]
at controllers.Login$$anonfun$login$1.apply(Login.scala:18) ~[classes/:2.0.4]
如果我尝试使用映射的普通形式绑定params,它可以工作:
val form = Form(
tuple(
"identity" -> nonEmptyText,
"password" -> nonEmptyText,
"loginType" -> nonEmptyText
)
)
form.bindFromRequest
这对我的登录ajax帖子很有用。但对于其他ajax帖子,我仍然想使用DynamicForm并使用Map [String,String]。任何想法是什么问题?
答案 0 :(得分:1)
我的开发团队和我有同样的问题。在我们的例子中,我们使用Java,java.util
集合包和以下代码行将请求参数绑定到Map。
final Map<String, String[]> myForm = request().body().asFormUrlEncoded();
我不知道Scala,但我认为有一种方法可以在Scala中使用Java集合。