当我尝试修改我的Controller(由脚手架生成)时出现此错误。 我想要做的是添加我从SpringSecurity Service捕获的当前用户。
付款类内有User属性。
我试图从springSecurityService.getCurrentUser()
注入用户值;
当我尝试这个时,会产生错误: 类[class kks.Payment]的属性[user]不能为null
我试图调试,它看起来很好,但仍然产生这个错误......
如果我将表单中的user.id作为隐藏值,这将很有效..但我不想这样做...
如何解决这个问题?
这是我的代码:
class PaymentController {
def springSecurityService;
@Transactional
def save(Payment PaymentInstance) {
println("1..... Payment");
PaymentInstance.user = springSecurityService.getCurrentUser();
if (PaymentInstance == null) {
notFound()
return
}
println("2..... Payment"+springSecurityService.getCurrentUser().class);
println(PaymentInstance.user.id); // still okay !!!
if (PaymentInstance.hasErrors()) {
println("3..... hasErrors?"); // entered here with Property [user] of class > [class kks.Payment] cannot be null
respond PaymentInstance.errors, view: 'create'
return
}
println("3..... Payment");
PaymentInstance.save flush: true
request.withFormat {
form multipartForm {
flash.message = message(code: 'default.created.message', args: >[message(code: 'Payment.label',
default: 'Payment'), PaymentInstance.id])
redirect PaymentInstance
}
'*' { respond PaymentInstance, [status: CREATED] }
}
}
}
答案 0 :(得分:1)
在paymentInstance
中插入值后,您应该验证实例,如:
paymentInstance.user = springSecurityService.getCurrentUser();
paymentInstance.validate()
然后检查错误。
PS:请遵循惯例:变量名称应从小写字符开始。