Кой е най-добрият начин да отрежете стойността на полето в домейна?
Моето предложение е да се използва beforeSave()
, но ще работи ли нещо подобно?
class Book {
String name = name?.trim()
}
Отговори:
2 за отговор № 1Имате няколко опции в зависимост от това какво поведение искате.
Персонализиран сетер, който ще отреже стойността всеки път, когато го зададете
class Book { String name void setName(String name) { this.name = name?.trim() } }
Персонализиран получател, който ще ви даде подрязана стойност, но не я съхранява в базата данни
class Book { String name String getName() { this.@name?.trim() } }
Хибернално събитие, като
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