出勤管理システムの開発に挑んでいるのですが、あることが実現できず
色々調べてみたのですが解決に至らないのでご教授いただきたいです。
現状のプログラムでデバッグしたところ
「指定されたパスが見つかりません」とでました。
【環境】
・Java8
・Eclipse 4.6
・Spring Framework
・apache tomcat8.0
前提・実現したいこと
・出勤時刻、退勤時刻、昼休憩などが表で記載しているExcelファイルのダウンロードを行えるようにしたい。
・ダウンロードボタンを押下した際、リダイレクト表示ではなく
「ダウンロードが完了しました」みたいに案内が表示できるようにしたい。
発生している問題・エラーメッセージ
ボタン押下してもダウンロードができない。
試したこと
上記のWebサイトも参考にしてみたのですが、実装が難しく実現できませんでした。
【Controller】
java
1@RequestMapping(value = "workList", method = RequestMethod.GET, params = { "select", "excelDownload" }) 2 public String workListGetExcelDownload(HttpServletRequest request, @RequestParam(name = "select") String userId, 3 RedirectAttributes redirectAttribute) throws ComponentException { 4 5 try { 6 // monthを取得する 7 String value = request.getParameter("month"); 8 YearMonth yearMonth; 9 10 // monthが実在する日付の場合 11 if (!InputCheck.checkDate(value, "yyyy-MM")) { 12 // monthが実在しない日付の場合、405エラーへリダイレクト 13 return "forward:/error/400"; 14 } 15 16 // DBからユーザNo.取得 17 LoginInfoBean loginInfoBean = this.userInterface.getUserInfo(userId); 18 19 // ファイル名を取得 20 String name = loginInfoBean.getFamilyName() + loginInfoBean.getFirstName(); 21 22 // monthをLocalDate型にする 23 yearMonth = InputCheck.toYearMonth(value, "yyyy-MM"); 24 25 // Excelファイルのダウンロード開始 26 try (InputStream in = new FileInputStream( 27 new File(FilePathEnum.USER_DIR.getPath() + FilePathEnum.EXCEL_TEMPLATE_PATH.getPath() 28 + String.format(FilePathEnum.EXCEL_TEMPLATE_FILE_NAME.getPath(), "name"))); 29 OutputStream out = new FileOutputStream( 30 new File(FilePathEnum.USER_DIR.getPath() + FilePathEnum.EXCEL_OUTPUT_PATH.getPath() 31 + String.format(FilePathEnum.EXCEL_TEMPLATE_FILE_NAME.getPath(), name)))) { 32 33 // ユーザNo.・monthを年月日化した値でログイン情報(ユーザNo.・氏名)を取得する 34 Context context = new Context(); 35 context = this.workListImpInterface.workListGetExcel(loginInfoBean, yearMonth); 36 37 JxlsHelper.getInstance().processTemplate(in, out, context); 38 39 } 40 41 redirectAttribute.addAttribute("select", loginInfoBean.getUserId()); 42 43 // 検索に使用した年月日をリダイレクトにセット 44 redirectAttribute.addAttribute("month", yearMonth); 45 46 // 稼働一覧画面のパス 47 return "redirect:/manager/workList"; 48 49 } catch (Exception e) { 50 e.printStackTrace(); 51 throw new ComponentException("Excelファイル出力処理例外発生.", e); 52 } 53 } 54
【Pathクラス】
java
1public enum FilePathEnum { 2 3 /** 作業用パス */ 4 //USER_DIR("C:\pleiades/workspace/Pinoco"), 5 USER_DIR("C:\eclipse/workspace/Pinoco"), 6 // USER_DIR(System.getProperty("user_dir")), 7 /** 日報エクセルテンプレートパス */ 8 EXCEL_TEMPLATE_FILE_NAME("作業実績報告書_%.xls"), 9 /** 日報エクセルテンプレートパス */ 10 EXCEL_TEMPLATE_PATH("/src/main/webapp/resources/excel/"), 11 /** 日報エクセル出力パス */ 12 EXCEL_OUTPUT_PATH("/src/main/webapp/resources/output/"); 13 14 private final String path; 15 16 private FilePathEnum(String path) { 17 this.path = path; 18 } 19 20 /** 21 * @return path 22 */ 23 public String getPath() { 24 return this.path; 25 } 26 27} 28
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。