2013-11-14 51 views
2

我正在爲我的簡單應用程序使用Servlet和Jsp。當我點擊「提交」按鈕時,它會調用鋸齒形文件並下載PDF文件並將其導入下一頁。現在我的問題是我在我的servlet中使用response.setHeader and getOutputStream,並且同時我正在嘗試將我的resquest下載到下一頁。現在它扔給我錯誤說java.lang.IllegalStateException: Cannot forward after response has been committed。 請任何人都可以幫我解決這個問題。在Servlet中提交響應後無法轉發

代碼:

public class Class extends HttpServlet { 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    { 
Document document = new Document(); 
     ServletConfig cfg=getServletConfig(); 
     ServletContext application=cfg.getServletContext(); 
    response.setContentType("application/pdf"); 
      response.setHeader("Content-Disposition"," attachment; filename=\"BI_Staffing.pdf\"");    
      PdfWriter writer = PdfWriter.getInstance(document, response.getOutputStream()); 

------------ 
---------------(My Code) 
document.close(); 

       RequestDispatcher rd=request.getRequestDispatcher("staffing-results1.jsp"); 
       rd.forward(request,response); 
} 
} 
+0

你不能提供一個PDF和HTML從一個JSP。您需要決定哪一個更適合提供給用戶。 – Tap

回答

0

你必須改變你的 「工作流程」。 Web應用程序基於HTTP,即請求 - 響應協議。您已經通過寫入響應的outputStream來響應您的請求。您無法再轉發回覆。而且,您只能打開一個「輸出通道」 - 用於二進制響應的outputStream或文本輸出通道的編寫器。由於輸出流已經爲您的PdfWriter打開,您甚至無法讓寫入器寫入一個位。

如何通過表單的提交操作顯示帶有PDF鏈接的staffing-results1.jsp?

相關問題