我有一个复合域对象,如下所示:
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>
请注意,我在 select 的 fieldValue 中使用了 forSale.numBedrooms。我无法为此生成脚手架代码来看看它应该如何完成,因为由 create-views 生成的创建视图不包含对 forSale House 对象中的字段的引用。
我也无法找到通过 GSP 访问的复合字段的任何示例,所以这有点猜测。在任何情况下,GSP 页面都不会出现错误,尽管这可能是因为我无法保存任何数据。
我将 numBedrooms 的值作为 URl 查询字符串的一部分发回...
&num卧室=2
当我这样做时,我的控制器中的保存代码会默默地失败 - 至少没有任何东西被写入数据库。我已经打开了几乎所有内容的调试日志记录,但我在日志中没有收到任何表明有问题的消息,尽管显然有些问题。
如果我从查询字符串中删除了 numBedrooms 参数,那么我的保存将正常进行,所以我猜这与解析 numBedrooms 有关。
任何线索我做错了什么以及我可以做些什么来追踪我的问题?