Grails:Constraints:数据库允许空值,但表单可能不是空白

时间:2012-12-13 20:22:20

标签: validation grails gorm nullable

我有一个名为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接受空值,但在验证时,不允许空值或空格?

2 个答案:

答案 0 :(得分:4)

这就是Command Objects的用途

答案 1 :(得分:0)

解决方案(到目前为止)非常丑陋。似乎没有办法使一个grails域属性可以为空并且有一个CONSTRAINT。唯一的方法是使用命令对象进行验证。在我看来,这是一个非常痛苦的解决方案和一个相当不优雅,记录不良的方法。这是我最不愉快的经历。