Grails错误验证现有输入

时间:2014-08-18 06:29:59

标签: java grails gorm

当我尝试修改我的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] }
        }
    } 
}

1 个答案:

答案 0 :(得分:1)

paymentInstance中插入值后,您应该验证实例,如:

paymentInstance.user = springSecurityService.getCurrentUser();
paymentInstance.validate()

然后检查错误。

PS:请遵循惯例:变量名称应从小写字符开始。