【发布时间】:2013-12-21 11:05:56
【问题描述】:
我对 Grails 和 Groovy 很陌生,发现了奇怪的行为。 在我的一个控制器类中,我有以下 list() 方法:
def list() {
[priceListInstanceList: PriceList.list(), priceListInstanceTotal: PriceList.count()]
}
当我从我的 gsp g:select 调用它时,一切正常:
<g:select name="priceListId" from="${vladar.PriceList.list()}" optionKey="id" optionValue="priceListName" />
现在,如果我将创建一个与 list() 完全相同的新方法并将名称更改为 list2()
def list2() {
[priceListInstanceList: PriceList.list(), priceListInstanceTotal: PriceList.count()]
}
并相应地更改 g:select:
<g:select name="priceListId" from="${vladar.PriceList.list2()}" optionKey="id" optionValue="priceListName" />
我收到一条错误消息:
Class
groovy.lang.MissingMethodException
Message
No signature of method: vladar.PriceList.list2() is applicable for argument types: () values: [] Possible solutions: list(), list(java.util.Map), last(), last(java.lang.String), last(java.util.Map), first()
看起来list() 方法在后台有一些魔力。
我想在g:select 中获得特定选项。我编写了渲染得很好的控制器部分,但是当我尝试将值返回给 gsp 时得到相同的消息。
看来这不是我的控制器的一般问题。
任何想法如何修复 list2 以便它显示在g:select 中?
谢谢。
【问题讨论】:
标签: grails gsp grails-controller