@Component("AbstractExcelView")
publicabstractclassAbstractExcelViewextendsAbstractView {
@OverrideprotectedfinalvoidrenderMergedOutputModel(Map<String, Object>model, HttpServletRequestrequest, HttpServletResponseresponse) throwsException {
// doing
}
/**
* Subclasses must implement this method to create an Excel HSSFWorkbook document,
* given the model.
* @param model the model Map
* @param workbook the Excel workbook to complete
* @param request in case we need locale etc. Shouldn't look at attributes.
* @param response in case we need to set cookies. Shouldn't write to it.
*/protectedabstractvoidbuildExcelDocument(
Map<String, Object>model, HSSFWorkbookworkbook, HttpServletRequestrequest, HttpServletResponseresponse)
throwsException;
}
AbstractView 기능을 구현하기 위해서는 기본적으로 renderMergedOutputModel 메소드를 구현해야 한다. 시점은 Controller 처리 후 라고 보면 쉽게 이해 할 수 있다. model 값은 Controller 에서 modelMap, ModelAndView 에 넣었던 데이터들 이라고 생각 하면 된다.
AbstractExcelView 의 경우에는 Excel 생성 부분 buildExcelDocument 메소드만 Override 하여 구현 하면 됬는대, 인자로 넘어오는 HSSFWorkbook 는 Excel2003 버전을 지원 한다. 확장자 (.xls) 그 이상 버전을 지원하는 poi 라이브러리를 사용 하는 경우 AbstractView 를 직접 구현해야 한다.