Grails Свойство класса домена Установить не удалось Валидация - PullRequest
0 голосов
/ 30 октября 2011

У меня проблема с сеттером в Grails. У меня есть два свойства beforeTax и afterTax. Я хочу хранить только одно свойство в БД beforeTax. В пользовательском интерфейсе я хочу, чтобы пользователь вводил до или после налогообложения. Поэтому я сделал afterTax временным свойством, подобным этому:

double getAfterTax(){
  return beforeTax * tax
}

void setAfterTax(double value){
  beforeTax = value / tax
}

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

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 12 января 2012

Если я правильно понимаю ваш вопрос, вы хотите вычислить beforeTax на основе значения afterTax?

Вы можете использовать методы обработчика событий beforeXXX (), где XXX - Validate, Insert и Update для вычисления beforeTax,Тогда ограничение beforeTax может быть обнуляемым: false.

def beforeValidate() {
   computeBeforeTax() 
}
0 голосов
/ 30 октября 2011

Вы должны пометить одно свойство как временное, чтобы GORM не пытался сохранить эту переменную в БД.Попробуйте добавить эту строку в свой класс домена, который содержит afterTax.

static transients = ['afterTax']
...