在我的Grails 2.3.8应用程序中,我定义了以下控制器操作
class RegisterController {
def register(User user) {
render text: "User name is '$user.name'"
}
}
user
参数是域类实例。如果我使用URL
http://localhost:8080/myapp/register/register
我得到NullPointerException
。但是我对数据绑定的理解是,如果在没有任何参数的情况下调用此操作,则应为参数分配new User()
答案 0 :(得分:5)
然而,我对数据绑定的理解是,如果这个动作是 在没有任何参数的情况下调用,该参数应该被赋予一个新的 用户()
情况不一定如此。对于域类命令对象,如果不存在任何参数,则仅为POST请求创建新实例。
来自http://grails.org/doc/2.4.0.RC1/guide/theWebLayer.html#commandObjects ...
如果命令对象的类型是域类,并且没有id 请求参数然后将null传递给控制器操作 除非HTTP请求方法是“POST”,在这种情况下是一个新实例 将通过调用域类来创建域类 构造
2.3.8文档中可能缺少该文本。我会验证并在必要时添加它。
答案 1 :(得分:-2)
如果修改了以下内容:
'$user.name'
成为:
'${user?.name}'