Почему-то один мой 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
не является методом родительского класса (добавляется метапрограммированием). Есть ли другой способ достичь моей цели?