gpt4 book ai didi

Grails 动态脚手架与 hasMany : is it a bug or am I misconfiguring?

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

我是一个 Grails 菜鸟,遇到了一些似乎是错误的东西,但完全有可能我没有正确配置所有内容。

我有两个简单的域类:

   class Player {

String firstName
String lastName

static constraints = {
firstName(blank:false)
lastName(blank:false)
}
String toString() { lastName + ", " + firstName }
}

class Team {

String mascot;
static hasMany = [players:Player]

static constraints = {
mascot(blank:false)
}
}

我有两个 Controller ,它们除了动态脚手架这两个域类之外什么也不做。

但是,即使我的数据库中有玩家列表,在创建新团队时也没有为他们提供多选框。

但是,当我去编辑团队时,会出现多选

这是新项目的动态脚手架中的错误吗?我是否误解了它的工作原理,或者我还需要在这里声明其他内容吗?

非常感谢任何帮助!由于我是新手,StackOverflow 不允许我添加一些屏幕截图,但如果有帮助的话,我很乐意向他们展示另一种方式。

最佳答案

我终于弄清楚了这一点,并想将我所做的事情传递出去,以防其他人遇到它。

当我为团队生成 View 时,edit.gsp 中的表单 block 如下所示:

    <input type="hidden" name="id" value="${teamInstance?.id}" />
<input type="hidden" name="version" value="${teamInstance?.version}" />
<div class="dialog">
<table>
<tbody>

<tr class="prop">
<td valign="top" class="name">
<label for="mascot">Mascot:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:teamInstance,field:'mascot','errors')}">
<input type="text" id="mascot" name="mascot" value="${fieldValue(bean:teamInstance,field:'mascot')}"/>
</td>
</tr>

<tr class="prop">
<td valign="top" class="name">
<label for="players">Players:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:teamInstance,field:'players','errors')}">
<g:select name="players"
from="${Player.list()}"
size="5" multiple="yes" optionKey="id"
value="${teamInstance?.players}" />

</td>
</tr>

</tbody>
</table>
</div>
<div class="buttons">
<span class="button"><g:actionSubmit class="save" value="Update" /></span>
<span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span>
</div>
</g:form>

但是create.gsp中的表单 block 看起来像这样:

<g:form action="save" method="post" >
<div class="dialog">
<table>
<tbody>

<tr class="prop">
<td valign="top" class="name">
<label for="mascot">Mascot:</label>
</td>
<td valign="top" class="value ${hasErrors(bean:teamInstance,field:'mascot','errors')}">
<input type="text" id="mascot" name="mascot" value="${fieldValue(bean:teamInstance,field:'mascot')}"/>
</td>
</tr>

</tbody>
</table>
</div>
<div class="buttons">
<span class="button"><input class="save" type="submit" value="Create" /></span>
</div>
</g:form>

换句话说,对于这种极端情况,默认的“创建” View 会忽略小部件以正确显示多选列表。当我复制并粘贴丢失的代码时,动态脚手架 Controller 会拾取它并按预期保留它。所以,这肯定是 View 生成代码中的一个错误。

关于Grails 动态脚手架与 hasMany : is it a bug or am I misconfiguring?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/823137/

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