4
This問題很好地解釋瞭如何在春季編寫下載文件控制器。 This問題很好地解釋說Post請求無法使用response.sendRedirect()錯誤處理在春季下載文件控制器重定向
我希望用戶被重定向到同一頁面,並報告導致文件下載錯誤的原因。這裏是工作流程
- 用戶點擊www.abc.com/index [控制器具有映射/index.jsp和返回的ModelAndView]
- 在這個頁面,我們有具有URL www.abc文件下載。 COM /下載?RESOURCE_ID = 123。 [控制器已映射/下載並返回無效]
- 當文件下載出現錯誤時,應將用戶重定向到www.abc.com/index並顯示一些錯誤。
- 當文件下載沒有錯誤時,用戶停留在同一頁面並出現文件下載對話框。
以下爲轉發的片段:
@RequestMapping(/download)
public void execute(@RequestParam(value = "resource_id" required = true) final String resource, final HttpServletRequest request, final HttpServletResponse response) {
try {
//some processing
} catch {
RequestDispatcher dispatcher = request.getRequestDispatcher("/index" + "?is_downloaded=false");
dispatcher.forward(request, response)
}
}
@RequestMapping(/index)
public void execute(@RequestParam(value = "is_downloaded" required = false) final String isDownloaded, final HttpServletRequest request) {
//do stuff here
}
第三步是問題。
- 使用轉發將URL更改爲錯誤報告的下載URL。
- 使用重定向作爲帶有隱藏參數的response.sendRedirect()是不可能的,根本不會修改URL。
- 使用重定向爲response.sendRedirect是()的隱含參數,並會引入「?is_downloaded =假」在URL
結束誰能告訴解決類似的問題。
2的方法來解決這個問題,你不需要爲無效返回值,返回的ModelAndView或字符串會容易得多。 – Jaiwo99 2014-12-05 23:56:48