2014-08-27 99 views
1

我的錯誤頁面沒有顯示senderror方法發送的錯誤消息。錯誤頁面:在xhtml頁面上顯示sendError消息

<h:head> 
    <title>Error Page</title> 
</h:head> 
<h:body> 
    <p>Error : #{requestScope['javax.servlet.error.message']}</p> 
    <h:outputText value="#{requestScope['javax.servlet.error.message']}" /> 
</h:body> 

我送錯誤這樣從過濾器

((HttpServletResponse) response).sendError(-1, "You do not have a active session to access this page."); 

正確的頁面渲染,但我只能看到輸出爲:

Error : 

但錯誤信息來自javax.servlet.error.message不被打印。

回答

1

這表明FacesServlet沒有在錯誤頁面請求上被調用,而這是負責解析該XHTML文件中的所有JSF標籤和EL表達式並生成HTML輸出的人。要確認這一點,請右鍵單擊瀏覽器中的錯誤頁面並執行查看源代碼;你不應該在那裏看到任何JSF/EL的東西,而是純粹的JSF生成的HTML輸出。

你需要確保在web.xml<error-page><location>匹配FacesServlet<url-pattern>作爲web.xml定義。例如,如果您將其映射到/faces/*的URL模式,則錯誤頁面位置必須與/faces/error.xhtml相似。否則,請將FacesServlet映射更改爲*.xhtml,這樣您就不必擔心虛擬URL。

也就是說,-1絕對不是一個有效的HTTP status code開始。在4xx範圍內的東西更適合於此。例如。 400或者401,具體取決於你如何進行身份驗證。

相關問題