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

时间:2014-03-30 16:43:08

标签: grails

我正在尝试在控制器的保存操作期间修改或添加域属性。我使用的是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'属性是否为空。 springsecurityservice正在返回一个值,但它没有在属性stockBy中设置。此代码在旧版本的grails中运行良好。为什么这不适用于grails 2.3.2?

1 个答案:

答案 0 :(得分:1)

我一直在努力解决同样的问题。问题是域对象会记住以前的错误,需要在将用户添加到stockInstance.stock后重新验证:

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