10

练习这里写的内容: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没有区别。这里有什么问题?

4

1 回答 1

9

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

"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 文档是错误的。谢谢你抓住它!

于 2012-04-24T21:26:53.193 回答