Spring + jasperreport (3) Subreport

북마크 추가

SubReport의 사용

 

앞서 iReport에서 디자인한 jrxml 파일을 예로 들면 SubReportdatasource의 이름을 subdata로 설정 하였다.

Multiformat-view를 이용하여 PDF 파일로 출력 하는 경우 Controllerjasperreport-views.properties를 수정해야 한다.

부모 report file과 자식 report fileWEB_INF\reports\ 폴더 내에 위치 시킨다.

 

 

ReportController.java

 

@Controller

public class ReportController {

@RequestMapping(value = "/reports/test.do")

public ModelAndView test(

@ModelAttribute(“testVO") TestVO testVO,

Map<String, Object> map, ModelMap model) throws Exception{

본인 프로젝트에 맞는 방법으로

쿼리를 실행하여 값을 리스트에 담는다

          -Subreportdatasourcelist2에 담는다.

          List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();

          List<Map<String,Object>> list2 = new ArrayList<Map<String,Object>>();

          return JasperReportUtil.render("multiformat-view", list, list2, "pdf");              //     renderlist, list2리턴한다.

} 

 

public static class JasperReportUtil extends Exception {


private static final long serialVersionUID = 1L;


public static ModelAndView render(String templateId,

   List<Map<String, Object>> list, List<Map<String, Object>> list2, String fmt) {


  JRBeanCollectionDataSource src = new JRBeanCollectionDataSource(list);

  JRBeanCollectionDataSource src2 = new JRBeanCollectionDataSource(list2);

 

  ModelAndView mv = new ModelAndView();


  mv.setViewName(templateId);

  mv.addObject("format", fmt);

  mv.addObject("datasource", src);

  mv.addObject("subdata",src2);              //  iReport에서 설정한 이름과 같아야 한다.

 

  return mv;

  }

} 

 

 

Jasperreports-views.properties

 

 

multiformat-view.(class)=org.springframework.web.servlet.view.jasperreports.JasperReportsMultiFormatView

multiformat-view.url=/WEB-INF/reports/파일명.jrxml            // 부모 jrxml 파일명

multiformat-view.reportDataKey=datasource

multiformat-view.subReportDataKeys=subdata 

AD
관리자
2014-07-13 14:28
SHARE