Форма воспроизведения 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
В соответствии с 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 неверна. Спасибо, что поймали его!