Groovy验证问题

时间:2009-09-25 13:33:22

标签: validation groovy

我有一个使用tomcat和Oracle 10g配置的groovy系统。 我有一个groovy类,它定义了以下内容:(简化版)

class ChangeTicket {

static constraints = {
    chngNr(nullable:false) 
}

String chngNr
}

我的控制器定义了一个保存方法:

 if (changeTicketInstance.validate() && !changeTicketInstance.hasErrors() && changeTicketInstance.save()) {         
        flash.message = "changeTicket.created"
        ...
    }

据我所知, save 方法默认调用validate方法 知道约束是否已满,因此验证方法调用 是多余的。无论如何,当执行保存时,如果字段chngNr为NULL,则将抛出异常。 实际上该字段不能为空(NULL),因为我已经定义了约束(nullable:false)。

我在这里做错了什么?

提前致谢,

路易斯

2 个答案:

答案 0 :(得分:3)

如果 chngNr NULL ,则验证调用将失败。某些数据库不考虑空字符串(“”)null(HSQL)。如果您使用表单中的params将 chngNr 绑定到 changeTicketInstance ,则会为其分配一个空字符串作为值,在这种情况下,您希望约束为:

chngNr(blank:false) 

另外,save()不会抛出异常,除非你使用save(flush:true)。 Hibernate将更改排队,除非您刷新,否则不会抛出实际异常。

答案 1 :(得分:2)

试试这个:

chngName(空白:假,可为空:假)

: - )