2009-08-20 7 views
5

El documento de referencia dice que la restricción de tamaño:uso con restricción de tamaño entero en Grails

utiliza una gama maravillosa para restringir el tamaño de una colección o número o la longitud de una cadena.

Cuando pongo una restricción de tamaño en un entero, recibo una advertencia

propiedad [prop] de la clase de dominio theClass tiene el tipo [java.lang.Integer] y no es compatible restricción [tamaño]. Esta restricción no se comprobará durante la validación.

¿El documento está equivocado?

Sé que podría usar el rango, pero en general sería más fácil poder especificar la cantidad de dígitos en vez del valor real (como un número de seguridad social debe tener 7 dígitos o lo que sea, en lugar de haciendo un rango de 1000000 - 9999999).

Respuesta

2

Si desea que el número de dígitos, asegúrese de que es positivo y tiene una cierta longitud:

myInteger(validator: { 
    return it > 0 && (it.toString.length) == 7 
}) 
+0

¿Fue necesario el 'retorno'? –

1

También se puede utilizar como máximo para limitar un entero como myIntProp (max: 9999999)

+1

Eso sería como usar un rango. En general, sería más fácil poder especificar la cantidad de dígitos en el número en lugar del valor real (como un número de seguridad social debe tener 7 dígitos o lo que sea, en lugar de hacer un rango de 1000000 - 9999999). – Fletch

+0

Sería más fácil si fuera posible, pero no veo cómo un validador personalizado es más fácil que un rango o máximo. Otra cosa a tener en cuenta es que si está trabajando con "números" como SSN o códigos postales de los EE. UU. Que pueden contener ceros a la izquierda, de todos modos, sería mejor usar una Cadena. Solo un pensamiento. - Dave –

+1

Bueno, hay espacio para el error cuando escribes 7 0 en una fila, eso es todo. Sin embargo, probablemente me conformo con esto en lugar del validador personalizado, creo. El punto de cadena es válido ... pero creo que es más fácil usar un número, y simplemente formatee para mostrar una cierta cantidad de dígitos (es decir, incluir ceros a la izquierda). – Fletch

2

I encontró la respuesta mientras buscaba JIRA: http://jira.codehaus.org/browse/GRAILS-947. El documento está equivocado.

No necesitamos minSize, maxSize y las limitaciones de tamaño de los campos numéricos más ya que esta funcionalidad es el mínimo, máximo y restricciones de rango respectiva. Entonces marcamos estas restricciones (solo para los campos numéricos) como obsoleto en 0.5 y lo eliminaremos en 0.6.

Parece que depende del validador personalizado.

+2

"eliminarlo en 0.6" A partir de 2.1.1, esto todavía está allí. –

0

Como señaló en su enlace Jira, creo que la respuesta correcta para esto es usar la restricción range para enteros.

Creo que esto es tan simple como reemplazar size con range.

Cuestiones relacionadas