Grails:将一个List从GSP传递给带有远程链接的控制器

时间:2014-04-08 15:30:28

标签: list grails gsp

因此,在控制器ServicioComunitario中的方法A中,我将其发送给GSP:

tg = ServicioComunitario.findAll("from ServicioComunitario as b where "+query)
[servicioComunitarioInstanceList: tg, params: params]

然后在GSP中我调用ServicioComunitarioController的另一个方法(generarDocDeReporte):

   <g:set var="b" value="${'xls'}"/>            
    <g:set var="a" value="${'excel'}"/>
    <g:set var="servicioLista" value="${servicioComunitarioInstanceList}"/>
    <g:link controller="ServicioComunitario" action="generarDocDeReporte"
        params="${[exportFormat:a, extesion:b, tg: servicioLista] }"
        update="mainContent">Excel</g:link><br/>

然后,在新方法&#34; generarDocDeReporte&#34;我有:

println params.exportFormat+"-"+params.extesion

if(params.tg)
  println "Not empty"

exportFormat和扩展按预期工作,但params.tg似乎表现不正常。

我正在尝试使用这个新的params.tg,它是一个ServicioComunitario.list(params):

exportService.export(params.exportFormat, response.outputStream, ServicioComunitario.list(params), fields, labels, formatters, parameters)

这是我收到错误的地方:

exportService.export(params.exportFormat, response.outputStream, params.tg, fields, labels, formatters, parameters)

当我收到params.tg时,我是否需要施放它?或者您认为错误是什么?

非常感谢您提前

1 个答案:

答案 0 :(得分:3)

您无法在链接中传递此类实例列表。但是,您可以将ID作为参数收集到列表中,然后使用它在以后填充它。例如:

<g:link controller="ServicioComunitario" action="generarDocDeReporte"
        params="${[exportFormat:a, extesion:b, tgids: servicioLista.collect{it.id}.join(',')] }"
    update="mainContent">Excel</g:link><br/>

然后在您的控制器中,您需要再次获取列表:

def tg = ServicioComunitario.getAll(params?.tgids?.tokenize(","))

此外,退回模型时,您不需要将params分配给params。参数已经按照惯例在GSP中公开。

[servicioComunitarioInstanceList: tg]