Play 2.0表单 - 字段"验证"方法不是成员

non*_*com 10 validation scala playframework-2.0

练习这里写的内容:ScalaForms,我创建了以下形式:

  val personCreationForm = Form(
    tuple (
        "name" -> nonEmptyText,
        "age" -> number verifying (min(0), max(100))       /*ERROR*/
    ) verifying ("Wrong entry", result => result match {
      case (name, age) => true
    })
  )
Run Code Online (Sandbox Code Playgroud)

但是,关于verifying状态的错误value verifying is not a member of (java.lang.String, play.api.data.Mapping[Int]).

如在引用的示例中那样使用mapping而不是tuple没有区别.这有什么不对?

Jul*_*Foy 9

根据Scala 运算符优先级规则,以字母开头的方法的优先级低于其他字母,因此当您编写时:

"age" -> number verifying (min(0), max(100))
Run Code Online (Sandbox Code Playgroud)

编译器构建以下表达式:

("age" -> number) verifying (min(0), max(100))
Run Code Online (Sandbox Code Playgroud)

这不是你想要的!您可以按如下方式重写它:

"age" -> number.verifying(min(0), max(100))
"age" -> (number verifying (min(0), max(100)))
Run Code Online (Sandbox Code Playgroud)

而目前的Play文档是错误的.谢谢你抓住它!