【问题标题】:Grails: Constraints: Database to allow nulls, but forms may not be blankGrails:约束:数据库允许空值,但表单不能为空
【发布时间】:2012-12-13 20:22:19
【问题描述】:

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

【问题讨论】:

    标签: validation grails grails-orm nullable


    【解决方案1】:

    这就是Command Objects 的用途

    【讨论】:

    • 谢谢格雷格。我最终实现了这一点,但我希望有更好的方法。发现它真的很浪费时间。
    • 我不同意这种解决方案丑陋且浪费时间。除了在域级别允许某种条件约束之外,我不确定它会如何变得更好。可能是你错误地使用了命令对象,所以感觉很痛苦。
    • 也许吧。当我完成我的实现后,我会在这里发布。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-10-04
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      相关资源
      最近更新 更多