Grails:使用g:each预选表格行中的g:select选项

时间:2012-07-26 16:01:49

标签: grails

我在预先选择grails选择下拉菜单时遇到问题。我有一张桌子,每排都有一个下拉。

表中的行由g:each:

定义
<g:each in="${fooList}" status="i" var="fooInstance">

所以每一行都有这个对象的字段,让我们称之为Foo!

String name
String age
Bar xyz

问题出现在最后一栏。对象中有另一个对象(Bar xyz)。我希望能够在当前的Foo中更改此Bar(这是一个域对象)。但是当页面加载时,Foo可能已经有了一个Bar。

如何将select绑定到预先填充的子对象? select中包含子对象的可能值(当前可用的所有条)但绑定不起作用!

<td>${fieldValue(bean: fooInstance, field: "name")}</td> //this is fine

<td><g:select from="${Bar.list()}" name="xyz" 
optionValue="${fooInstance.xyz}" value="${fooInstance.xyz.id}" 
optionKey="id" noSelection="['':'-Choose a Bar-']" /></td>

有什么想法吗?希望这很清楚,如果您需要任何其他信息,请告诉我,

谢谢, 贝

顺便说一下,我得到的堆栈跟踪是:

  

由MissingMethodException引起:没有方法签名:xxxxxxxxx.Bar.getAt()适用于参数类型:(xxxxxxx.Bar)值:[aaablahblah]   可能的解决方案:getAt(java.lang.String),getAll(),getId(),getAll([Ljava.lang.Long;),getAll(java.util.List),get(java.io.Serializable)

2 个答案:

答案 0 :(得分:0)

每当我得到missingMethodException时,我发现我需要停止服务器,清理项目,然后重新启动服务器。

答案 1 :(得分:0)

查看documentation for the select tagoptionValue应该是Select正文中显示的当前项的属性,即optionValue="${{it.someProperty}}" it是正在显示的Bar

这有用吗?