我有一个包含 map 的服务:

static Map cargosMap = ['1':'item1','2':'item 2','3':'item 3']

通过服务中的方法返回的值:
 static Map getCargos() {
    [cargosMap]
 }

Controller 这样调用它:
def mform = {

    Map cargos = empService.getCargos()

    [cargos:cargos]
}

在gsp中,我可以选择:
<g:select name="cg1" from="${cargos}" />

但我得到了异常(exception):
 Error 500: Executing action  ....caused exception:
   org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object
   ...
   with class 'java.util.ArrayList' to class
  'java.util.Map'

有什么线索吗?谢谢

最佳答案

在我看来,就像您将 map 包装在getCargos()的ArrayList中一样。为什么不只是static getCargos() { cargosMap }。或者,更好的是,只需将cargosMap重命名为cargos,Groovy将为您创建 setter/getter 。

07-27 15:52