2014-09-24 63 views
0

的值字段的对象我有一个命令对象Grails命令验证基于其他字段

@Validateable 
class PropertyDetailsCommand implements Serializable { 
    Boolean ownerOccupied 
    String personalDescription 

    static constraints = { 

     personalDescription validator:{value, obj, errs-> 
      if(obj.ownerOccupied==true) 
      { 
       if(!value) 
       errs.rejectValue('personalDescription','propertyDetailsCommand.personalDescription.blank') 

      } 

     } 

    } 

} 

我发现,当声明

if(obj.ownerOccupied==true) 

存在,验证不起作用。

我试图通过添加

static mapping={ 
    ownerOccupied lazy:false 
} 

但它不工作。

+0

映射中的懒设置不会做任何事情,因为ownerOccupied是不是一个域,但一个简单的类型。 if语句应该像“if(obj.ownerOccupied)”一样,因为您可以在这里使用Groovy的真理(并且在ownerOccupied为null时这会返回false,这在您的模型中是可能的) – sola 2014-09-24 12:27:16

回答

0

像这样的东西应该工作...

@Validateable 
class PropertyDetailsCommand implements Serializable { 
    Boolean ownerOccupied 
    String personalDescription 

    static constraints = { 
     personalDescription validator:{value, obj -> 
      if(obj.ownerOccupied && !value) { 
       return 'blank' 
      } 
     } 
    } 
}