/ / По подразбиране изрязва полето на домейна - grails, groovy

По подразбиране изтрийте областта на домейна - граали, groovy

Кой е най-добрият начин да отрежете стойността на полето в домейна?

Моето предложение е да се използва beforeSave(), но ще работи ли нещо подобно?

class Book {

String name = name?.trim()

}

Отговори:

2 за отговор № 1

Имате няколко опции в зависимост от това какво поведение искате.

  1. Персонализиран сетер, който ще отреже стойността всеки път, когато го зададете

    class Book {
    String name
    
    void setName(String name) {
    this.name = name?.trim()
    }
    }
    
  2. Персонализиран получател, който ще ви даде подрязана стойност, но не я съхранява в базата данни

    class Book {
    String name
    
    String getName() {
    this.@name?.trim()
    }
    }
    
  3. Хибернално събитие, като beforeSave() както споменахте, което ще го отреже само преди обектът да се запази.


1 за отговор № 2

Забелязах, че Grails автоматично прави .trim () на полета, преди да ги упори. Например:

null
""
"      "

Всичко се съхранява като null в Grails 2.3.7 за нулируем низ. В допълнение:

"      foobar     "

съхранява се като "foobar"

Тези резултати използват базата данни по подразбиране h2. Така че може да оставите Граала да направи тежко повдигане в този случай.


1 за отговор № 3

Ами можете да активирате автоматично подрязване на низ в Grails (версия 2.3+), като зададете под свойството във файла Config.groovy под:

grails.databinding.trimStrings = true

Това автоматично ще отреже низ, преди да се запази или актуализира.

-SA