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

时间:2012-04-21 06:55:41

标签: scala validation 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
    })
  )

但是,verifying上的错误表明value verifying is not a member of (java.lang.String, play.api.data.Mapping[Int])

使用mapping代替tuple,如引用的示例所示,没有任何区别。这有什么不对?

1 个答案:

答案 0 :(得分:9)

根据Scala operators precedence rules,以字母开头的方法的优先级低于其他方式,所以当你写的时候:

"age" -> number verifying (min(0), max(100))

编译器构建以下表达式:

("age" -> number) verifying (min(0), max(100))

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

"age" -> number.verifying(min(0), max(100))
"age" -> (number verifying (min(0), max(100)))

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