【发布时间】:2014-05-10 02:13:43
【问题描述】:
在我的 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()
【问题讨论】:
-
不。如果 url 中没有有效的
id,则用户域将为空。 -
@dmahapatro 你确定吗?如果这是真的,您似乎永远无法将操作参数与保存新域类实例的操作一起使用
-
@dmahapatro 我不确定这是不是真的。如果您只传递一个与目标对象中的任何字段匹配的表单参数,则会发生数据绑定。
-
@Dónal 我想知道它的行为是否不像命令对象,因为这是一个域类。你可以只用一个命令对象试试看是否得到相同的结果吗?对我来说听起来像是一个错误。我经常使用带有可选/无参数的命令对象来支持模型中的数据。这就是为什么我认为这是一个错误。
-
@JoshuaMoore 你是对的,如果我把它变成一个命令对象,我不会得到异常。我想这是一个 Grails 错误,我已经打开了一张 JIRA 票 jira.grails.org/browse/GRAILS-11393
标签: grails data-binding