Переопределение сеттера на доменном классе в Grails 1.1.2 - PullRequest
0 голосов
/ 06 февраля 2010

У меня есть следующие два класса домена в Grails 1.1.2:

class A implements Serializable {
 MyEnumType myField
 Date fieldChanged

 void setMyField(MyEnumType val) {
  if (myField != null && myField != val) {
   myField = val
   fieldChanged = new Date()
  }
 }
}

class B extends A {
 List children
 void setMyField(MyEnumType val) {
  if (myField != null && myField != val) {
   myField = val
   fieldChanged = new Date()
   children.each { child -> child.myField = val }
 }
}

Когда я устанавливаю myField экземпляра B, я включаю установщик в цикл ... myField = val line вызывает установщик снова вместо присвоения нового значения.

Любой совет, как правильно переопределить сеттер? Спасибо

1 Ответ

0 голосов
/ 31 мая 2010

Используйте ключевое слово this, чтобы избежать вызова метода получения или установки:

this.myField = val

См. http://groovy.codehaus.org/Groovy+Beans#GroovyBeans-Propertyandfieldrules

...