bindFromRequest和asFormUrlEncoded返回不同的值

时间:2015-02-02 04:46:27

标签: forms scala playframework playframework-2.3

我有一个表单,其中字段名称与提交中的方法/ url参数之一相同,例如someInt。即我的表单有@(dummyForm:Form[Dummy], someInt:Int)dummyForm有一个字段"someInt" -> number,控制器定义为def submit(someInt:Int) =...Sample code here.

假设我使用dummy.someInt值222和url参数555提交表单,我发现以下内容:

  • request.body.asFormUrlEncoded显示一个someInt,即输入字段中输入的值:(someInt,ArrayBuffer(222))
  • bindFromRequest,但是以某种方式将表单值绑定到url参数值,在这种情况下为555

这是预期的行为吗?我原以为bindFromRequest能够区分这两者吗?有没有一种首选的方法来防止这种类型的冲突(除了有不同的名称)?

(在这种情况下有一种解决方法。如果您明确指定bindFromRequest一组值,即asFormUrlEncoded,它似乎可以按预期工作,而不是使用bindFromRequest(request.body.asFormUrlEncoded.getOrElse(Map()))的无参数版本。我正在使用Scala - 没有尝试用Java复制。)

1 个答案:

答案 0 :(得分:1)

bindFromRequest函数中,request.queryString显式附加到值列表。