【发布时间】:2014-03-25 15:27:29
【问题描述】:
我有以下域类。
Address
String number
String roadName
String country
Person
String fName
String age
Address address
我有一个名为PersonViewSave 的视图,我希望用户能够从该视图中保存Person 信息。创建Person 记录时,用户还需要创建Address 记录。
我的 Person 控制器如下所示:
PersonViewSave ={
def ad = new Address(number: '11', roadName: 'round road', country:'France').save()
new Person(fName: 'Alex', age: '23', address:ad).save()
}
1.) 我如何从视图中收集参数并将其带到PersonViewSave 方法中? (有人可以给我看一个带有Person 和Address 文本字段的示例GSP 视图文件)
2.) 如果在创建的地址中有错误,我如何防止创建具有如本行所示地址的 Person 对象new Person(fName: 'Alex', age: '23', address:ad).save()
更新
<g:form name="myForm" method="post" action="doIt">
<p>Person info:</p>
<label for="firstName">First Name</label>
<g:textField name="firstName" id="firstName" />
<p>Address Info:</p>
<label for="roadName">Street Number</label>
<g:textField name="roadName" id="roadName" />
<g:submitButton name="submit" value="Submit" />
在这里,我只使用了域类中的几个对象来看看它是否有效。
我在两个域类中还有一个名为 createdDate 的参数。这也需要自动插入。
我的服务等级如下:
def saveService () {
def ad = new Address(params)
if (ad.save(flush: true)) {
def p = new Person(params)
p.address = ad
p.save()
} else {
// display validation errors
}
}
1.) 我收到一个错误,它是 > No such property: params for class: pro.PersonService
2.) 我有 2 个具有相同名称的参数的域类。例如Animal 和Person 域类有一个名为firstName 的参数。根据您之前的解决方案,grail 将如何区分它属于哪个域类?
我使用的是 Grails 2.2.4
【问题讨论】:
-
您可以使用
grails generate-all命令(grails.org/doc/2.3.7/ref/Command%20Line/generate-all.html)让它为您的两个对象吐出控制器和视图,以查看默认脚手架的工作原理(grails.org/doc/2.3.7/guide/scaffolding.html) -
您使用的是哪个版本的 Grails?
标签: grails