因此,在控制器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时,我是否需要施放它?或者您认为错误是什么?
非常感谢您提前
答案 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]