Grails Domain类属性设置失败验证

时间:2011-10-29 22:29:34

标签: setter grails-domain-class grails-validation

我的grails中的setter有问题。我在beforeTax和afterTax之前有两个属性。我只想在db beforeTax中存储一个属性。在ui中,我希望用户在税前或税后输入。所以我把afterTax变成了这样的瞬态属性:

double getAfterTax(){
  return beforeTax * tax
}

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

当我现在输入税后价值并希望保存对象时,验证失败(税前不能为空值)

我做错了什么?

2 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你想根据afterTax的值计算beforeTax吗?

您可以在XXX()之前使用事件处理程序方法,其中XXX是Validate,Insert和Update来计算beforeTax。然后beforeTax的约束可以为空:false。

def beforeValidate() {
   computeBeforeTax() 
}

答案 1 :(得分:0)

您必须将一个属性标记为瞬态,以防止GORM尝试将此变量保存到DB中。尝试将此行添加到您的域类中,该类包含afterTax

static transients = ['afterTax']