grails - 在grails 2.3中保存期间更改域的属性

标签 grails

我正在尝试在 Controller 的保存操作期间修改或添加域属性。我正在使用grails 2.3.2,我的代码如下:

@Transactional
def save(Stock stockInstance) {
    if (stockInstance == null) {
        notFound()
        return
    }
    stockInstance.stockBy = User.findById(springSecurityService.getPrincipal().id)

    if (stockInstance.hasErrors()) {
        respond stockInstance.errors, view: 'create'
        return
    }

    stockInstance.save flush: true

    request.withFormat {
        form {
            flash.message = message(code: 'default.created.message', args: [message(code: 'stockInstance.label', default: 'Stock'), stockInstance.id])
            redirect stockInstance
        }
        '*' { respond stockInstance, [status: CREATED] }
    }
}

问题是'stockBy'属性即将变为null。 springsecurityservice返回一个值,但未在属性stockBy中设置。该代码在较旧版本的grails中可以正常工作。为什么这不适用于grails 2.3.2?

最佳答案

我一直在同一个问题上挣扎。问题在于,域对象会记住以前的错误,并且在将用户添加到stockInstance.stockBy之后需要重新验证:

   stockInstance.stockBy = springSecurityService.currentUser
   stockInstance.validate()

关于grails - 在grails 2.3中保存期间更改域的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22746699/

相关文章:

hibernate - org.hibernate.AssertionFailure:[…]条目中的id为null(发生异常后不要刷新Session)

hibernate - Grails .save(flush:true)不会立即保存数据

grails - Grails应用程序中用于电子邮件提取的插件

grails - 转发而不是重定向,同时仍然滚动带有片段的页面

javascript - 如何将值直接从 Controller 传递到 Grails 中的 javascript 文件

eclipse - 为什么我无法下载STS?

grails - 如何在Grails 4中获得反序列化的JTS Geometry字段?

json - 使用条件运算符在 Grails 中渲染 'as JSON' 无法正确渲染

java - 如何使用 Spock 测试 Grails 服务?

performance - Grails:部署时间非常慢。 'Resolving Dependencies...' 需要 10 多秒