Eclipse 설정
1. ***-servlet.xml
~~-servlet.xml 파일을 열어 property파일을 사용하기 위해 태그 속성을 추가한다
<bean id="viewMappings" class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<property name="basename" value="jasperreports-views" />
<property name="order" value="0" />
</bean>
<* URL이 *.do패턴인 경우 ViewResolver가 JSP파일보다 먼저 찾도록 order속성을 준다.>
2. jasperreports-views.properties
WEB-INF\classes폴더에 jasperreports-views.properties 파일 생성
내용 입력
multiformat-view(model에 넘길 이름).(class)=org.springframework.web.servlet.view.jasperreports.JasperReportsMultiFormatView
multiformat-view.url=/WEB-INF/reports/파일명.jrxml
multiformat-view.reportDataKey=datasource
3. *.jrxml file
Report 파일은 WEB-INF\reports\ 폴더 내에 복사 한다.
PDF한글 출력을 위해 H2GTRM.TTF FONT 파일도 같은 경로에 위치 시킨다.
4. 컨트롤러 세팅
ReportController.java – PDF로 출력할 경우
@Controller
public class ReportController {
@RequestMapping(value = "/reports/test.do")
public ModelAndView test(
@ModelAttribute(“testVO") TestVO testVO,
Map<String, Object> map, ModelMap model) throws Exception{
본인 프로젝트에 맞는 방법으로
쿼리를 실행하여 값을 리스트에 담는다
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
return JasperReportUtil.render("multiformat-view", list, "pdf");
}
multiformat-view : jasperreport-views에 설정한 이름
list : 쿼리를 통해 db에서 불러온 값
pdf: 출력할 형식 (multiformat-view는 기본적으로 pdf, csv, xls, html 형식을 지원한다.
이때 iReport에서 설정한 field 명과 Map에 담기는 키 값이 일치해야 한다.
ReportController.java
public static class JasperReportUtil extends Exception {
private static final long serialVersionUID = 1L;
public static ModelAndView render(String templateId, List<Map<String, Object>> list,, String fmt) {
JRBeanCollectionDataSource src = new JRBeanCollectionDataSource(list);
ModelAndView mv = new ModelAndView();
mv.setViewName(templateId); // multiformat-view
mv.addObject("format", fmt); //pdf
mv.addObject("datasource", src); //list DataSource -> “datasource”는 jasperreport-views.properties 파일의
multiformat-view.reportDataKey의 이름과 일치해야한다.
return mv;
}
}
댓글 감사합니다. 위에 소스랑 설정 그대로 작업 했는데 실행이 안됩니다. @RequestMapping(value = "/help/openHelp_report.do") public ModelAndView test( Mapmap, ModelMap model) throws Exception{ //본인 프로젝트에 맞는 방법으로 //쿼리를 실행하여 값을 리스트에 담는다 List