2012-09-19 101 views
1

我在JSF和spring中創建項目,其主要目的是在瀏覽器中生成PDF文件。一切似乎都很好,並生成pdf也是如此,但在控制檯上我得到這個異常。任何人都有這個想法?我搜查並發現很多人都有這個問題,但我沒有找到任何解決方案。錯誤渲染視圖:java.lang.IllegalStateException:getOutputStream()已被調用此響應

SEVERE: Error Rendering View[/WebPages/SearchPages/index.xhtml] 
    java.lang.IllegalStateException: PWC3991: getOutputStream() has already been called for this response 

同時創造我的OutputStream對象

HTTPServletResponse response = (HTTPServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse(); 

ServletOutputStream out = response.getOutputStream(); 

我收到此錯誤是否有任何問題,而我的創作,或任何其它原因?任何幫助都將非常可觀

+0

這是哪裏的PDF生成代碼調用?我所要求的原因是因爲之前的Spring過程或JSF呈現過程可能會在執行此代碼之前獲取OutputStream並將字節寫入響應。 –

回答

3

您需要告訴JSF自己已經完成了HTTP響應,否則在操作方法完成後,JSF仍然會繼續執行默認的RENDER_RESPONSE作業,這將導致這種異常,因爲響應已經提交。

您可以通過在操作方法中調用FacesContext#responseComplete()來實現。

了responseComplete

public abstract void responseComplete()

信號JSF的實現,此請求的HTTP響應已經生成(如HTTP重定向),並且請求處理生命週期應該被終止爲目前階段即將完成。

參見:

相關問題