¿Cuál es la mejor manera de recortar el valor del campo en el dominio?
Mi sugerencia es usar beforeSave()
, pero funcionaria algo como esto?
class Book {
String name = name?.trim()
}
Respuestas
2 para la respuesta № 1Tienes un par de opciones dependiendo de qué comportamiento quieres.
Un configurador personalizado, que recortará el valor cada vez que lo establezca
class Book { String name void setName(String name) { this.name = name?.trim() } }
Un captador personalizado, que le dará un valor recortado pero no lo almacenará en la base de datos
class Book { String name String getName() { this.@name?.trim() } }
Un evento de hibernación, como
beforeSave()
como mencionó, que solo lo recortará antes de que el objeto persista.
1 para la respuesta № 2
Me he dado cuenta de que Grails hace automáticamente un .trim () en los campos antes de persistirlos. Por ejemplo:
null
""
" "
Todo se almacena como nulo en Grails 2.3.7 para una cadena anulable. Adicionalmente:
" foobar "
se almacena como "foobar"
Estos resultados están utilizando la base de datos h2 predeterminada. Así que puedes dejar que Grails haga el trabajo pesado en este caso.
1 para la respuesta № 3
Bueno, puedes habilitar el recorte automático de la cadena en Grails (versión 2.3+) configurando la propiedad debajo en el archivo Config.groovy:
grails.databinding.trimStrings = true
Esto recortará automáticamente la cadena antes de guardar o actualizar.
-SA