2013-08-22 30 views
0

我有一個關於是否有可能的問題。我有一個spring mvc webapp,它有一個鏈接到返回Excel文檔的外部網站的按鈕。返回的Excel文檔的名稱是垃圾,我想在提示用戶保存之前重命名文檔。Spring MVC webapp鏈接到excel文件並重命名它

這是可能的使用彈簧mvc。我在一個非常舊的版本。該版本與Java 1.4.2兼容。

到目前爲止,我在想,我將擴展org.springframework.web.servlet.mvc.AbstractController,覆蓋handleRequestInternal然後做這樣的事情....

protected ModelAndView handleRequestInternal(HttpServletRequest request, 
     HttpServletResponse response) throws Exception { 

RedirectUrlBuilder urlBuilder = new RedirectUrlBuilder(); 
urlBuilder.setServerName(batchServerName); 
urlBuilder.setPort(Integer.parseInt(batchServerPort)); 
urlBuilder.setContextPath(batchReportRoot); 
urlBuilder.setServletPath(reportNameServletPath); 
urlBuilder.setPathInfo(reportNamePathInfo); 
urlBuilder.setScheme(HTTP); 

String transitionUrl = urlBuilder.getUrl(); 
ModelAndView modelAndView = new ModelAndView(new RedirectView(transitionUrl)); 

return modelAndView; 

但我怎麼採取進一步,因爲它涉及在等,以文件重命名......

感謝

回答

1

也許你可以考慮另一種方法是,你有一個代理服務器到外部網站的請求的控制器實現。用戶不要直接與外部網站進行交互,而要與您的Controller進行交互。這會讓您有機會在將文件傳送給用戶之前重命名該文件。這也意味着,如果事情在未來發生變化,您只需要更改Controller的實施。

所以提出的工作流程可能是:

  1. 用戶點擊鏈接到你的控制器/ downloadExcelReport
  2. 請求由ExcelReportController處理
  3. ExcelReportController發出HTTP請求到外部網站並獲取Excel文檔
  4. 在將Excel報告返回給用戶之前,ExcelReportController會設置正確的HTTP標頭以確保文件根據您的需要命名。

這樣你只提供一個普通的Controller實現,而不必重寫Spring的內部。

+0

聽起來不錯。我會試一下 – Richie

相關問題