播放表单绑定困难 - 如何在后端获取请求后修改请求?

时间:2013-07-16 18:09:44

标签: scala extjs playframework extjs4 playframework-2.1

我正在尝试将Extjs表单连接到Play! Scala后端。

我收到请求没问题,但是

FormName.bindFromRequest.get返回给我None

我能够通过request.request.body.data中的POST请求中的Extjs提交生成的数据(第一个请求对象由SocialSecure的控制器生成),而通常可以找到绑定到表单的数据。 request.request.body.data.elems

我认为Extjs在插入HTML中使用<form>的问题导致了我这个问题,但我仍然希望利用Extjs的漂亮表单验证UI。

玩吗!或者Scala有任何资源可以在服务器收到请求后修改请求吗?

更多信息

这是我的/requestAudit在POST请求后指向的方法:

def requestAudit = SecuredAction(WithProvider("google")) { // SecureSocial syntax
implicit request => {                              // let's call this line 0'
  println(request.request.body.asFormUrlEncoded)   // let's call this line 1'
  println(request.body.asText)                     // let's call this line 2'
  newAuditForm.bindFromRequest.fold(
      errors => BadRequest(views.html.error(newAuditForm))
      success => { /*insert the object into my db*/ }
  ) } }


Ext.js请求

当我在Eclipse中使用Ext.js表单进行调试时,Variables窗口显示:( click for closeup) 表单值位于request.body.data.key1request.body.data.key2等位置

引导表单请求

另一方面,Bootstrap请求的值存储在request.body.data.elems

1 个答案:

答案 0 :(得分:0)

@ 2manyprojects的建议让我走上了正确的道路:

newAuditForm.bindFromRequest(
  (request.request.body.asFormUrlEncoded).getOrElse(Map()))
      .fold( ... )

的工作。

我将代码更改为此后仍然出现表单绑定错误,然后我在我的一个Ext.js表单字段的name属性中发现了一个拼写错误。 UI和播放表单上的字段名称必须相同。