我正在尝试在 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/