2012-04-21 11 views
10

Practicar lo que está escrito aquí: ScalaForms, he creado la siguiente forma:Formulario de Juego 2.0 - campo Método de "verificación" no es un miembro de

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

Sin embargo, el error en verifying establece que value verifying is not a member of (java.lang.String, play.api.data.Mapping[Int]).

Trabajar con mapping en lugar de tuple, como en el ejemplo al que se hace referencia, no hace ninguna diferencia. ¿Que esta mal aquí?

Respuesta

9

Según Scala operators precedence rules, métodos empieza con una letra tienen una prioridad más baja que otros por lo que cuando se escribe:

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

El compilador construye la siguiente expresión:

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

Lo que no lo es ¡usted quiere! Puede reescribirlo de la siguiente manera:

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

Y la documentación actual de Play es incorrecta. Gracias por atraparlo!

+0

Hace dos años y la documentación sigue siendo incorrecta. Tampoco parece resolver el "nombre" -> texto que verifica (requiere) el error de compilación de la documentación. – halt00

+0

La documentación actualizada es correcta: https://www.playframework.com/documentation/2.3.x/ScalaForms –

Cuestiones relacionadas