2

我正在尝试使用 DynamicForm 提取 ajaxly ($.ajax(...)) 发送的帖子参数:

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]

如果我尝试将参数与映射的正常形式绑定,它可以工作:

  val form = Form(
    tuple(
      "identity" -> nonEmptyText,
      "password" -> nonEmptyText,
      "loginType" -> nonEmptyText
    )
  )
  form.bindFromRequest

这对我的登录 ajax 帖子很有用。但是对于我的其他 ajax 帖子,我仍然想使用 DynamicForm 并使用 Map[String,String]。知道有什么问题吗?

4

1 回答 1

1

我的开发团队和我遇到了同样的问题。在我们的例子中,我们使用 Java、java.util集合包和以下代码行将请求参数绑定到 Map。

final Map<String, String[]> myForm = request().body().asFormUrlEncoded();

我不了解 Scala,但我认为有一种方法可以在 Scala 中使用 Java 集合。

于 2013-07-27T02:12:26.543 回答