2014-04-08 2 views
0

그래서, 컨트롤러 ServicioComunitario 내 방법 A에 나는 GSP이를 보내Grails는이 : 원격 링크 컨트롤러에 GSP에서 목록을 통과

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

을 그럼 난 다른 방법을 호출 GSP에 (generarDocDeReporte를) ServicioComunitarioController의 :

<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/> 

그런 다음 새 방법 "generarDocDeReporte는"나는이 :

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

if(params.tg) 
    println "Not empty" 

exportFormat 및 extension이 예상대로 작동하지만 params.tg가 정상적으로 작동하지 않는 것 같습니다.

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

I을 :

나는 그것이 ServicioComunitario.list (PARAMS)이었다 새로운 params.tg 사용하는 것을 시도하고있다 : 나는 오류를 얻을 경우 여기

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

을 그리고있다 params.tg를 받으십시오. 캐스팅해야하나요? 또는 당신은 무엇이 오류라고 생각합니까?

당신은 단지 링크 같은 인스턴스 목록을 전달할 수 없습니다 사전

답변

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(",")) 

는 또한,이 모델을 반환 할 때 paramsparams를 할당 할 필요가 없습니다 예를 들어. 매개 변수는 관례에 따라 GSP에 이미 공개되어 있습니다.

[servicioComunitarioInstanceList: tg] 
+0

예! 조슈아, 대단히 감사합니다. – Alberici