/ / Campo de dominio de recorte por defecto - grails, groovy

Campo de dominio de recorte por defecto - grails, groovy

¿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 № 1

Tienes un par de opciones dependiendo de qué comportamiento quieres.

  1. Un configurador personalizado, que recortará el valor cada vez que lo establezca

    class Book {
    String name
    
    void setName(String name) {
    this.name = name?.trim()
    }
    }
    
  2. 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()
    }
    }
    
  3. 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