Constraints Usage
Constraints provide Grails with a declarative DSL for defining validation rules, schema generation and CRUD generation meta data. For example, consider these constraints:Uso de Restricciones (Constraints)
Los constraints le proporcionan a Grails un Lenguaje específico de dominio (DSL) para definir las reglas de validación, generación de esquema y generación de mata datos CRUD. Por ejemplo, considere estos constraints:class User {
... static constraints = {
login size: 5..15, blank: false, unique: true
password size: 5..15, blank: false
email email: true, blank: false
age min: 18
}
}
Refer to the user guide topic on Constraints for more information.
Consulte el tema Constraints en la guia del usuario para mayor información.Global Constraints
You can apply constraints globally insidegrails-app/conf/Config.groovy as follows:
Constraints Globales
Tu puedes aplicar contrainst globales engrails-app/conf/Config.groovy de esta manera:grails.gorm.default.constraints = { '*'(nullable: true, size: 1..20) }
grails.gorm.default.constraints = { myShared(nullable: true, size: 1..20) }
class User {
... static constraints = {
login(shared: "myShared")
}
}Quick reference
{hiden}Referencia rapida
{hiden}table: TableMacro: missing table content
Constraint | Description | Example
blank | Validates that a String value is not blank | login(blank:false)
creditCard | Validates that a String value is a valid credit card number | cardNumber(creditCard: true)
email | Validates that a String value is a valid email address. | homeEmail(email: true)
inList | Validates that a value is within a range or collection of constrained values. | name(inList: ["Joe", "Fred", "Bob"])
matches | Validates that a String value matches a given regular expression. | login(matches: "[a-zA-Z]+")
max | Validates that a value does not exceed the given maximum value. | age(max: new Date()) price(max: 999F)
maxSize | Validates that a value's size does not exceed the given maximum value. | children(maxSize: 25)
min | Validates that a value does not fall below the given minimum value. | age(min: new Date()) price(min: 0F)
minSize | Validates that a value's size does not fall below the given minimum value. | children(minSize: 25)
notEqual | Validates that that a property is not equal to the specified value | login(notEqual: "Bob")
nullable | Allows a property to be set to null - defaults to false. | age(nullable: true)
range | Uses a Groovy range to ensure that a property's value occurs within a specified range | age(range: 18..65)
scale | Set to the desired scale for floating point numbers (i.e., the number of digits to the right of the decimal point). | salary(scale: 2)
size | Uses a Groovy range to restrict the size of a collection or number or the length of a String. | children(size: 5..15)
unique | Constrains a property as unique at the database level | login(unique: true)
url | Validates that a String value is a valid URL. | homePage(url: true)
validator | Adds custom validation to a field. | See documentation
table: TableMacro: missing table content
{hiden}| Constraint | Descripción | Ejemplo |
|---|---|---|
| blank | Valida que el valor de un String no sea blanco. | login(blank:false) |
| creditCard | Valida que el valor de un String sea un numero de tarjeta de credito valido. | cardNumber(creditCard: true) |
| Valida que el valor de un String sea un email valido. | homeEmail(email: true) | |
| inList | Valida que el valor este dentro de un rango o lista de valores definidos. | name(inList: ["Joe", "Fred", "Bob"]) |
| matches | Valida que el valor de un String coincida con una expresión regular. | login(matches: "[a-zA-Z]+") |
| max | Valida que un valor no exceda del valor máximo especificado. | age(max: new Date()) price(max: 999F) |
| maxSize | Validates that a value's size does not exceed the given maximum value. | children(maxSize: 25) |
| min | Valida que un valor no sea inferior al valor mínimo especificado. | age(min: new Date()) price(min: 0F) |
| minSize | Valida que el tamaño de un valor no sea inferior al valor mínimo especificado. | children(minSize: 25) |
| notEqual | Valida que una propiedad no sea igual al valor especificado. | login(notEqual: "Bob") |
| nullable | Permite que una propiedad sea null - por defecto false. | age(nullable: true) |
| range | Utiliza un rango de Groovy para asegurar que el valor de una propiedad se establece dentro de un rango especificado. | age(range: 18..65) |
| scale | Establece la escala deseada para los números de punto flotante (el número de dígitos a la derecha del punto decimal). | salary(scale: 2) |
| size | Utiliza un rango de Groovy para limitar el tamaño de una colección o la longitud de un Sting. | children(size: 5..15) |
| unique | Restringe una propiedad como única a nivel de base de datos. | login(unique: true) |
| url | Valida que el valor de un String es un URL valido. | homePage(url: true) |
| validator | Agregar un validación personalizada a un campo. | See documentation |
Scaffolding
Some constraints have no impact on persistence but customize the scaffolding. It's not usually good practice to include UI information in your domain, but it's a great convenience if you use Grails' scaffolding extensively.table: TableMacro: missing table content
Constraint | Description
display | Boolean that determines whether the property is displayed in the scaffolding views. If true (the default), the property is displayed.
editable | Boolean that determines whether the property can be edited from the scaffolding views. If false, the associated form fields are displayed in read-only mode.
format | Specify a display format for types that accept one, such as dates. For example, 'yyyy-MM-dd'.
password | Boolean indicating whether this is property should be displayed with a password field. Only works on fields that would normally be displayed with a text field.
widget | Controls what widget is used to display the property. For example, 'textArea' will force the scaffolding to use a <textArea> tag.
table: TableMacro: missing table content
{hiden}Scaffolding
Algunos constraints no tienen impacto have no impact sobre la persistencia pero personalizar la autogeneración. Usualmente, no es una buena práctica incluir la información de interfaz de usuario en el dominio, pero es de gran conveniencia si se utiliza la autogeneración de Grails ampliamente.| Constraint | Descripción |
|---|---|
| display | Booleano que determina si la propiedad es mostrado en las vistas autogeneradas. Si es true (por defecto), la propiedad es mostrada. |
| editable | Booleano que determina si la propiedad puede ser editada desde las vista autogeneradas. Si es false, the associated form fields are displayed in read-only mode. |
| format | Especifica un formato de visualización para los tipos que aceptan uno, como las fechas. Por ejemplo, 'yyyy-MM-dd'. |
| password | Booleano que indica si esta propiedad se debe mostrar con un campo de contraseña. Sólo funciona en los campos que normalmente se muestran con un campo de texto. |
| widget | Controla qué widget se utiliza para mostrar la propiedad. Por ejemplo, 'textArea' obligará a la autogeneración a utilizar una etiqueta <textarea>. |

