2

我有一个名为 OurCompany 的域对象,我希望能够故意插入一行大部分都是空值。但是,当用户填写表格时,我想验证它并且不允许空白。

class OurCompany {

    static constraints = {        
        enterpriseName blank:false, nullable:true
    }

    String enterpriseName

    static belongsTo = [measurement:Measurement]

}

当我在数据库中创建空行时,我关闭了验证,它工作正常。

ourCompany = new OurCompany();
measurement.addToOurCompany(ourCompany).save(validate:false);

稍后,当我更新该行时,验证被忽略并且记录保存,即使有一个空/空白值。

def ourCompany = loadOrCreateOurCompany();
def industrySectors = loadIndustrySectors();

bindData (ourCompany, params)

ourCompany.validate()
if (ourCompany.hasErrors()) {
    ourCompany.errors.allErrors.each {
        println(it)
    }
} else {            
    ourCompany.save();
}

如何告诉 grails 我希望 DATABASE 接受空值,但在验证时不允许空值或空白?

4

2 回答 2

4

这就是命令对象的用途

于 2012-12-13T20:54:13.043 回答
0

解决方案(到目前为止)真的很难看。似乎没有办法使 grails 域属性既可以为空又具有约束。唯一的方法是使用命令对象进行验证。在我看来,这确实是一个非常痛苦的解决方案,也是一个相当不雅、记录不充分的方法。这是我最不愉快的 grails 经历。

于 2012-12-14T11:31:00.107 回答