gpt4 book ai didi

grails - 使用域对象字段创建 View

转载 作者:行者123 更新时间:2023-12-02 15:29:07 26 4
gpt4 key购买 nike

我有以下域类。

Address

String number
String roadName
String country

Person

String fName
String age
Address address

我有一个名为 PersonViewSave 的 View 我希望用户能够保存 Person来自这个观点的信息。创建 Person 时记录用户需要创建一个 Address记录为好。

我的 Person Controller 如下所示:
PersonViewSave ={
def ad = new Address(number: '11', roadName: 'round road', country:'France').save()
new Person(fName: 'Alex', age: '23', address:ad).save()

}

1.) 我如何从 View 中收集参数并将其带到 PersonViewSave方法 ? (谁能给我看一个带有 PersonAddress 文本字段的示例 GSP View 文件)

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 个具有相同名称的参数的域类。例如 AnimalPerson域类有一个名为 firstName 的参数.根据您之前的解决方案,grail 将如何区分它属于哪个域类?

我正在使用 Grails 2.2.4

最佳答案

这是一种检查地址是否正确保存的方法:

def ad = new Address(params)
if (ad.save(flush: true)) {
def p = new Person(params)
p.address = ad
p.save()
} else {
// display validation errors
}

这将返回 Address如果保存正确,结果为 true , 否则返回 null (或 false )。

此外,您可以通过 params 使用数据绑定(bind)。映射以从参数创建对象。只要 params中的key匹配您的 Address 中的属性名称和 Person类,参数的值将被分配给对象。

因此,例如,映射您的 Person ,您将需要如下字段:
<g:form name="personForm" method="post" action="PersonViewSave">
<p>Person info:</p>

<label for="fName">First Name</label>
<g:textField name="fName" id="fName" />

<label for="age">Age</label>
<g:textField name="age" id="age" />


<p>Address Info:</p>

<label for="number">Street Number</label>
<g:textField name="number" id="number" />

<label for="roadName">Road</label>
<g:textField name="roadName" id="roadName" />

<label for="country">Country</label>
<g:textField name="country" id="country" />

<g:submitButton name="submit" value="Submit" />
</g:form>

关于grails - 使用域对象字段创建 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22639100/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com