컨트롤러의 저장 작업 중에 도메인 속성을 수정하거나 추가하려고합니다. 나는 Grails를 2.3.2을 사용하고 다음과 같이 내 코드는 다음과 같습니다grails에서 저장하는 동안 도메인의 속성을 변경하십시오. 2.3
@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에서 왜 이것이 작동하지 않습니까?
코드가 작동해야합니다. 개발 과정에서 GGTS 또는 다른 IDE를 사용하고 있습니까? 'User.findById'가 예상 한 것을 리턴하고 있는지 디버그 할 수 있습니다. 일반적으로'springSecurityService.currentUser'를 사용하는 경향이 있습니다. –
stockAs에 'stockInstance.stockBy', 'springSecurityService.getPrincipal() .id'및 'User.findById (springSecurityService.getPrincipal(). id) '그리고 나는 모든 정확한 결과를 얻고있다. 문제는 유효성 검사 중에이 결과가 도메인에 유지되지 않으므로 'stockBy'를 null로 설정할 수 없다는 오류가 발생합니다. –
도메인 클래스 코드 게시, 유효성 검사기를 사용하고 있습니까? –