Grails 2.5.4を使用していますが、ドメインオブジェクトで定義された制約に基づく検証が機能しないようです。与えられた:Grailsのドメイン検証が機能しない
class Pet {
String name
static constraints = {
name(nullable: false, blank: false)
}
}
私は、次のようなコードをテストする場合:私は、コンソール上の検証出力を見ることを期待
Pet p = new Pet()
if(!p.save()) {
p.errors.each {
println it
}
}
。代わりに、私は保存()上で実行時例外を受け取ります。
Class
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException
Message
Column 'name' cannot be null
これは私が期待される動作ではありません。検証が成功しなかった場合、save()はMySQL挿入呼び出しを行わないはずです。誰が問題が何であるか知っていますか?
私はまた、次のようにテスト:
Pet e = new Pet()
e.validate()
println e.hasErrors()
そして、私は間違っている偽の出力を取得します。
私はペットに名前を付けると挿入がうまく動作します。セットアップは大丈夫です。妥当性確認だけが機能していないようです。
動作を示すサンプルアプリケーションを提供できる場合は、何が問題になっているのかを特定するのは簡単です。 –
デフォルトでは、プロパティはnullではなく、空の文字列はデータバインディングによってヌルに変換されるため、 'name(nullable:false、blank:false) –