Html.Action () вызывает исключение StackOverflowException

Почему-то один мой Html. Методы Action () генерируют исключение StackOverflowException, которое обнаруживается только тогда, когда я отлаживаю экземпляр веб-сервера после того, как он зависает и перестает отвечать. Я получаю следующее:

System.StackOverflowException было unhandled

Невозможно оценить выражение, поскольку текущий поток находится в переполнении стека вы объявляете свои ограничения, а фреймворк добавляет метод validate (), который проверяет, действительно ли каждое из этих ограничений для текущего экземпляра e ....

Обычно для домена Grails или класса команд вы объявляете свои ограничения и фреймворк добавляет метод validate () , который проверяет, действительно ли каждое из этих ограничений для текущего экземпляра, например

class Adult {

  String name
  Integer age

  void preValidate() { 
    // Implementation omitted
  }

  static constraints = {
    name(blank: false)
    age(min: 18)
  }
}

def p = new Person(name: 'bob', age: 21)
p.validate()

В моем случае я хочу убедиться, что preValidate всегда выполняется перед класс подтвержден. Я мог бы добиться этого, добавив метод

def customValidate() {
  preValidate()
  validate()
}

. Но тогда каждый, кто использует этот класс, должен помнить о вызове customValidate вместо validate . Я тоже не могу этого сделать

def validate() {
  preValidate()
  super.validate()
}

, потому что validate не является методом родительского класса (добавляется метапрограммированием). Есть ли другой способ достичь моей цели?

7
задан Dónal 10 April 2011 в 17:23
поделиться