gpt4 book ai didi

grails - 如何在Grails GSP中保存复合字段值?

转载 作者:行者123 更新时间:2023-12-02 14:55:55 25 4
gpt4 key购买 nike

我有一个复合域对象,如下所示:

class Person 
{
static embedded = ['forSale']
Boolean isSelling
House forSale
}

class House
{
Integer numBedrooms
}

我有一个numBedrooms的选择控件,如下所示:
<tr class="prop">
<td valign="top" class="name">
<label for="numBedrooms"><g:message code="person.numBedrooms.label" default="Num Bedrooms" /></label>
</td>
<td valign="top" class="value ${hasErrors(bean: personInstance, field: 'forSale.numBedrooms', 'errors')}">
<g:select name="numBedrooms" value="${fieldValue(bean: personInstance, field: 'forSale.numBedrooms')}"
noSelection="${['null':'Select a number...']}"
from="${1..6}"
/>
</td>
</tr>

请注意,我正在选择的fieldValue中使用forSale.numBedrooms。我无法生成脚手架的代码来查看应该如何完成,因为由create-views生成的create View 不包含对forSale House对象中字段的引用。

我也无法提供通过GSP访问的复合字段的任何示例,因此这有点猜测。在任何情况下,GSP页面的呈现均无错误,尽管这可能是因为我无法保存任何数据。

我将numBedrooms的值作为URl查询字符串的一部分发回...

&numBedrooms = 2

当我这样做时, Controller 中的保存代码会静默失败-至少没有任何内容写入数据库。我已经打开了调试日志记录的几乎所有内容,但日志中没有任何消息表明任何错误,尽管显然是错误的。

如果我从查询字符串中删除numBedrooms参数,那么保存将照常进行,因此我猜测这与解析numBedrooms有关。

有什么提示我做错了什么以及我可以做些什么来找出问题所在?

最佳答案

我要做的是generate-all域的House,然后复制并粘贴GSP代码,并在完成后删除文件。我还发现在以后使用House域的情况下,创建模板来编辑House域更聪明。

对于您的GSP,您需要这样的内容(请注意name属性)

<tr class="prop">
<td valign="top" class="name">
<label for="forSale.numBedrooms"><g:message code="house.numBedrooms.label" default="Num Bedrooms" /></label>
</td>
<td valign="top" class="value ${hasErrors(bean: personInstance.forSale, field: 'numBedrooms', 'errors')}">
<g:select name="forSale.numBedrooms" value="${fieldValue(bean: personInstance.forSale, field: 'numBedrooms')}"
noSelection="${['null':'Select a number...']}"
from="${1..6}"
/>
</td>
</tr>

在您的参数字符串中,您需要 *forSale*.numBedrooms=2。此代码将与 person.properties = paramsnew Person(params)一起使用。

嵌入的“指令”仅告诉Hibernate在同一表中包括参数,它们仍然是单独的Domain类。即使您可能永远不会使用它,它也可能会为该域生成一个表。

希望这可以帮助。

关于grails - 如何在Grails GSP中保存复合字段值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2123871/

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