Validation Grails:正在保存对象,尽管它有错误

Validation Grails:正在保存对象,尽管它有错误,validation,grails,Validation,Grails,我在尝试验证和保存域对象时遇到问题 首先,我进行验证,当验证错误时,我将错误放在我未来要保存的对象中,如下所示: myDomain.errors.reject("An Error") myDomain.discard() // bind etc. ... // do grails validation if (!myDomain.validate()) { myDomain.discard() } // do custom validation if (

我在尝试验证和保存域对象时遇到问题

首先,我进行验证,当验证错误时,我将错误放在我未来要保存的对象中,如下所示:

myDomain.errors.reject("An Error")
myDomain.discard()
  // bind etc.
  ...

  // do grails validation
  if (!myDomain.validate()) {
    myDomain.discard()
  }

  // do custom validation
  if (custom validation has errors) {
    myDomain.errors.reject ()
    myDomain.discard()
  }
然后,当我试图保存这个对象时,我可以看到错误列表有一个错误,但是“验证”返回“true”,而且,当函数完成时,对象会自动保存。 我必须说,所有被调用的函数都在同一个类中,这个类是控制器

我需要知道如何在控制器类中编写save函数,该类只显示错误而不保存对象,并且在验证良好时保存对象

谢谢

myDomain.validate将覆盖myDomain.errors清除拒绝。你可以这样做:

myDomain.errors.reject("An Error")
myDomain.discard()
  // bind etc.
  ...

  // do grails validation
  if (!myDomain.validate()) {
    myDomain.discard()
  }

  // do custom validation
  if (custom validation has errors) {
    myDomain.errors.reject ()
    myDomain.discard()
  }
如果可以将自定义验证移动到myDomain上的某个域中,则不需要自定义验证

您不需要显式调用save

修复程序将使用:

@Transactional(readOnly = true)
对于位于服务文件中的函数。 它使函数避免在最后保存事务,这是问题的根源