我在预先选择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)
答案 0 :(得分:0)
每当我得到missingMethodException
时,我发现我需要停止服务器,清理项目,然后重新启动服务器。
答案 1 :(得分:0)
查看documentation for the select tag,optionValue
应该是Select
正文中显示的当前项的属性,即optionValue="${{it.someProperty}}"
it
是正在显示的Bar
。
这有用吗?