继GORM 文档 http://grails.org/doc/2.2.0/guide/GORM.html#gormComposition我尝试在 Grails 2.2.1 中使用以下域类:
package grailscompositiontest
class ScafPerson {
String name
ScafAddress homeAddress
ScafAddress workAddress
static constraints = {
name(nullable: false, blank: false)
}
static embedded = ['homeAddress', 'workAddress']
}
class ScafAddress {
String number
String code
}
控制器只使用脚手架:
package grailscompositiontest
class ScafPersonController {
static scaffold = true
}
不幸的是,这不起作用,当我浏览到“创建”视图时,它会触发服务器错误:
URI: /GrailsCompositionTest/scafPerson/create
Class: java.lang.NullPointerException
Message: Cannot get property 'id' on null object
知道我做错了什么吗?
前几天我遇到了同样的问题。我相信脚手架功能使用的模板中可能存在错误。您可以更新模板,或者如果您不想破坏模板,请运行生成全部正如 Benoit 提到的,然后修复生成的视图。
更新模板:
- grails> 安装模板
- 打开 src/templates/scaffolding/renderEditor.template
- 找到以下行:
sb << ' value="${' << domainInstance << '.' << property.name << '}"'
并更改为
sb << ' value="${' << domainInstance << '?.' << property.name << '}"'
要修复生成的视图:
- grails> 生成所有 grailscompositiontest.ScafPerson
- 打开视图/scafPerson/_form.gsp
- 寻找
<g:field name="id" type="number" value="${scafAddressInstance.id}" required=""/>
<g:field name="version" type="number" value="${scafAddressInstance.id}" required=""/>
并更改为
<g:field name="id" type="number" value="${scafAddressInstance?.id}" required=""/>
<g:field name="version" type="number" value="${scafAddressInstance?.id}" required=""/>
Note因为你有家庭地址/工作地址,所以你会做两次
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)