아래에 이어 filename 재질문드립니다. (이건 controller)
- 작성자 :
- 유*호
- 작성일 :
- 2010-10-05 09:02:19
- 조회수 :
- 3,049
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
@RequestMapping(value = "/rsm/rsvopr/inquiryItemMgrExcelList.do")
public ModelAndView inquiryItemMgrExcelList(Map<String, String> commandMap, ModelMap model) throws Exception {
model.addAttribute("commandMap", commandMap);
model.addAttribute("resultList", rsvOprService.inquiryItemMgrList(commandMap));
String[][] columnMeta = { { "baseYr", "기준연도", "C", "1", "0" }, { "insttNm", "기관명", "C", "1", "0" }, { "trgItemGrpNm", "대상품목구분", "C", "1", "0" },
{ "pupsGrpNm", "용도구분", "C", "1", "0" }, {"", "품목명", "N1", "0", "1"}, //2개로 병합
{ "itemKnd", "품목종류", "C", "1", "0" }, { "stndrd", "규격", "C", "1", "0" },
{ "unitNm", "단위", "C", "1", "0" }, {"", "수량", "N1", "0", "1"}, //2개로 병합
{ "goalQty", "수량", "N1", "1", "0" }, { "qty", "수량", "N1", "1", "0" },
{ "acqsAmt", "취득액", "N1", "1", "0" }, { "acqsDate", "취득일자", "C", "1", "0" },
{ "rotatDueDate", "순환대체예정일", "D", "1", "0" }, { "savmtrDtyNm", "비축책임자(정)", "C", "1", "0" },
{ "savmtrDamNm", "비축담당자(부)", "C", "1", "0" }, { "mnfcturDate", "제조일자", "D", "1", "0" },
{ "depreAmt", "잔존가액", "N1", "1", "0" }, { "uslfsvc", "내용연수", "N1", "1", "0" }, { "validDate", "유효기간", "D", "1", "0" } };
model.addAttribute("columnMeta", columnMeta);
model.addAttribute("sheetName", "관리대장");
//model.addAttribute("fileName", "관리대장");
return new ModelAndView("commonExcelView", "categoryMap", model);
}
위는 컨트롤러입니다. 보시는 바와같이 모델로 fileName을 보내고 싶은데
그게 안되네요. 저렇게 보낼수가 있는건가요? 보낸다면 view파일에서 어떻게
사용해야되는지. 아래 질문했던 것에 첨부view파일처럼 fileName을 받아서
response.header에 넣어주면 안되네요. 그리고 엑셀을 처음 쓸때
이름이 없다고 나오는듯 싶습니다. 적극적인 검토와 답변, 확인부탁드립니다.
public ModelAndView inquiryItemMgrExcelList(Map<String, String> commandMap, ModelMap model) throws Exception {
model.addAttribute("commandMap", commandMap);
model.addAttribute("resultList", rsvOprService.inquiryItemMgrList(commandMap));
String[][] columnMeta = { { "baseYr", "기준연도", "C", "1", "0" }, { "insttNm", "기관명", "C", "1", "0" }, { "trgItemGrpNm", "대상품목구분", "C", "1", "0" },
{ "pupsGrpNm", "용도구분", "C", "1", "0" }, {"", "품목명", "N1", "0", "1"}, //2개로 병합
{ "itemKnd", "품목종류", "C", "1", "0" }, { "stndrd", "규격", "C", "1", "0" },
{ "unitNm", "단위", "C", "1", "0" }, {"", "수량", "N1", "0", "1"}, //2개로 병합
{ "goalQty", "수량", "N1", "1", "0" }, { "qty", "수량", "N1", "1", "0" },
{ "acqsAmt", "취득액", "N1", "1", "0" }, { "acqsDate", "취득일자", "C", "1", "0" },
{ "rotatDueDate", "순환대체예정일", "D", "1", "0" }, { "savmtrDtyNm", "비축책임자(정)", "C", "1", "0" },
{ "savmtrDamNm", "비축담당자(부)", "C", "1", "0" }, { "mnfcturDate", "제조일자", "D", "1", "0" },
{ "depreAmt", "잔존가액", "N1", "1", "0" }, { "uslfsvc", "내용연수", "N1", "1", "0" }, { "validDate", "유효기간", "D", "1", "0" } };
model.addAttribute("columnMeta", columnMeta);
model.addAttribute("sheetName", "관리대장");
//model.addAttribute("fileName", "관리대장");
return new ModelAndView("commonExcelView", "categoryMap", model);
}
위는 컨트롤러입니다. 보시는 바와같이 모델로 fileName을 보내고 싶은데
그게 안되네요. 저렇게 보낼수가 있는건가요? 보낸다면 view파일에서 어떻게
사용해야되는지. 아래 질문했던 것에 첨부view파일처럼 fileName을 받아서
response.header에 넣어주면 안되네요. 그리고 엑셀을 처음 쓸때
이름이 없다고 나오는듯 싶습니다. 적극적인 검토와 답변, 확인부탁드립니다.
A
안녕하세요.. 유재호님..
파일다운로드(엑셀다운로드도 똑같은 원리)의 파일이름 등을 포함하여 어떠한 데이터도 모델로 넘겨질 수 있습니다.
위 처럼 보내셔도 됩니다.
view 파일에서는 말씀하신 것 처럼 response의 header 등을 통해 보내시면 됩니다.
header 부분 처리는 이전에 답변 드렸듯이.. 공통컴포넌트 파일다운로드쪽을 참조하시면 됩니다.
공통컴포넌트의 요소기술 중 "파일다운로드" 부분의 소스를 받으셔서 참조하셔야 할 것 같습니다.
- 파일명 : egovframework-common-1.0.0.zip
- 참조 소스 : src/main/java/egovframework/com/cmm/web/EgovFileDownloadController.java
개략적인 내용은 다음과 같으나.. 브라우져에 따라 한글 처리가 틀리기 때문에 전체 내용을 답변으로 올려드리지 못합니다.
response.setContentType(mimetype);
response.setHeader("Content-Disposition", "attachment; filename=\"" + URLEncoder.encode(fvo.getOrignlFileNm(), "utf-8") + "\"");
response.setContentLength(fSize);
response.setHeader 부분이 브라우져에 따라 처리 방식이 틀리고 .. 위 제시해 드린 java 파일에서는 setDisposition메소드를 통해 브라우져 별 한글 처리가 포함되어 있습니다.
그리고.. 다시 한번 말씀드리지만.. 그냥 안된다고 하시면.. 어떻게 안되는지.. 알 수가 없기 때문에.. 정확한 답변을 드릴 수 없습니다.
서버 상에 Exception이 발생했는지.. 화면상에 오류(브라우저의 저장 질문에 한글이 깨짐 등)가 발생했는데.. HTTP 처리상 404와 같은 오류코드가 발생했는지.. 등의 구체적인 정보가 필요합니다. (필요하다면 화면 캡처)
마지막으로.. bean 정의 상에 "commonExcelView"가 포함되어 있고.. BeanNameViewResolver(org.springframework.web.servlet.view.BeanNameViewResolver)가 ViewResolver로 등록되어 있는지 확인해 보십시오.
이 두 설정이 없으면 404 등의 HTTP가 발생할 것입니다.
그럼.. 즐거운 하루되십시오.
감사합니다.
파일다운로드(엑셀다운로드도 똑같은 원리)의 파일이름 등을 포함하여 어떠한 데이터도 모델로 넘겨질 수 있습니다.
위 처럼 보내셔도 됩니다.
view 파일에서는 말씀하신 것 처럼 response의 header 등을 통해 보내시면 됩니다.
header 부분 처리는 이전에 답변 드렸듯이.. 공통컴포넌트 파일다운로드쪽을 참조하시면 됩니다.
공통컴포넌트의 요소기술 중 "파일다운로드" 부분의 소스를 받으셔서 참조하셔야 할 것 같습니다.
- 파일명 : egovframework-common-1.0.0.zip
- 참조 소스 : src/main/java/egovframework/com/cmm/web/EgovFileDownloadController.java
개략적인 내용은 다음과 같으나.. 브라우져에 따라 한글 처리가 틀리기 때문에 전체 내용을 답변으로 올려드리지 못합니다.
response.setContentType(mimetype);
response.setHeader("Content-Disposition", "attachment; filename=\"" + URLEncoder.encode(fvo.getOrignlFileNm(), "utf-8") + "\"");
response.setContentLength(fSize);
response.setHeader 부분이 브라우져에 따라 처리 방식이 틀리고 .. 위 제시해 드린 java 파일에서는 setDisposition메소드를 통해 브라우져 별 한글 처리가 포함되어 있습니다.
그리고.. 다시 한번 말씀드리지만.. 그냥 안된다고 하시면.. 어떻게 안되는지.. 알 수가 없기 때문에.. 정확한 답변을 드릴 수 없습니다.
서버 상에 Exception이 발생했는지.. 화면상에 오류(브라우저의 저장 질문에 한글이 깨짐 등)가 발생했는데.. HTTP 처리상 404와 같은 오류코드가 발생했는지.. 등의 구체적인 정보가 필요합니다. (필요하다면 화면 캡처)
마지막으로.. bean 정의 상에 "commonExcelView"가 포함되어 있고.. BeanNameViewResolver(org.springframework.web.servlet.view.BeanNameViewResolver)가 ViewResolver로 등록되어 있는지 확인해 보십시오.
이 두 설정이 없으면 404 등의 HTTP가 발생할 것입니다.
그럼.. 즐거운 하루되십시오.
감사합니다.