Validation Grails:约束:数据库允许空值,但窗体不能为空
我有一个名为OurCompany的域对象,我希望能够有意识地插入一行,其中大部分为空。但是,当用户填写表单时,我希望对其进行验证,并且不允许空白Validation Grails:约束:数据库允许空值,但窗体不能为空,validation,grails,gorm,nullable,Validation,Grails,Gorm,Nullable,我有一个名为OurCompany的域对象,我希望能够有意识地插入一行,其中大部分为空。但是,当用户填写表单时,我希望对其进行验证,并且不允许空白 class OurCompany { static constraints = { enterpriseName blank:false, nullable:true } String enterpriseName static belongsTo = [measurement:Me
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我希望数据库接受空值,但在验证时,不允许空值或空白值?这就是它的目的这就是它的目的解决方案(到目前为止)非常丑陋。似乎没有办法使grails域属性既可为null又具有约束。执行此操作的唯一方法是使用Command对象对进行验证。在我看来,这确实是一个相当痛苦的解决方案,而且是一个相当不雅观、缺乏文档记录的方法。这是我最不愉快的grails体验。解决方案(到目前为止)非常糟糕。似乎没有办法使grails域属性既可为null又具有约束。执行此操作的唯一方法是使用Command对象对进行验证。在我看来,这确实是一个相当痛苦的解决方案,而且是一个相当不雅观、缺乏文档记录的方法。这是我最不愉快的grails体验。谢谢Greg。我最终实现了这个,但我希望有更好的方法。我发现这是一个真正的浪费时间。我不同意这种解决方案是丑陋的和浪费时间的。除了在域级别允许某种条件约束之外,我不确定它还有什么更好的地方。可能是因为您错误地使用了Command对象,所以感觉很痛苦。当我完成我的实现后,我会把它贴在这里。谢谢Greg。我最终实现了这个,但我希望有更好的方法。我发现这是一个真正的浪费时间。我不同意这种解决方案是丑陋的和浪费时间的。除了在域级别允许某种条件约束之外,我不确定它还有什么更好的地方。可能是因为您错误地使用了Command对象,所以感觉很痛苦。当我完成我的实现后,我将把它发布在这里。