我有一个名为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接受空值,但在验证时,不允许空值或空格?
答案 0 :(得分:4)
这就是Command Objects的用途
答案 1 :(得分:0)
解决方案(到目前为止)非常丑陋。似乎没有办法使一个grails域属性可以为空并且有一个CONSTRAINT。唯一的方法是使用命令对象进行验证。在我看来,这是一个非常痛苦的解决方案和一个相当不优雅,记录不良的方法。这是我最不愉快的经历。