2010-05-07 28 views
2

我拿到造成着我的錯誤頁面,當我把這個在我的JSP的頂部JSP例外...errorPage指令有效,但web.xml中的錯誤頁面沒有?

<%@ page errorPage="/error.page" %> 

但是當我嘗試用web.xml中做全球像這樣:

<error-page> 
    <exception-type>java.lang.Throwable</exception-type> 
    <location>/error.page</location> 
</error-page> 

我只是得到一個空白頁...我也試圖把/error.jsp中的位置元素..但沒有愛,要麼..

我引發的異常使用JSP只是包含這個:

<%if(true)throw new RuntimeException("test exception");%> 

我確實在tomcat的控制檯中看到了異常,但我不能得到那個錯誤頁面,在每個jsp上都沒有指示的情況下顯示...我在這裏丟失了一些簡單的東西嗎?

UPDATE:

/error.page映射(使用彈簧)的內容是這樣的:

<%@ page isErrorPage="true"%> 
<html> 
<head></head> 
<body> 
<div class="error"> 
An error has occurred, the development team has been notified. Sorry for the inconvenience. 
</div> 
</body> 
</html> 

我可以沒有錯誤直接打頁。

UPDATE:

如果你有這樣的問題...請確保你沒有過濾器吞嚥您鏈異常!請參閱下面的答案。

+1

對不起,我的錯誤答案的方式。我刪了它。我不知道爲什麼我發佈它。我顯然與'welcome-file'的行爲混淆了。哎呀,在我自己的項目中,我甚至會將錯誤頁面映射到前端控制器servlet上。一定是今天是星期五。 – BalusC 2010-05-07 22:23:21

+0

好的,回到你的問題:你是否在日誌中看到任何'IllegalStateException:響應已經完成? – BalusC 2010-05-07 22:29:07

+0

發生在我們身上:) 沒有..沒有在日誌中的其他錯誤。 – danb 2010-05-07 22:35:49

回答

2

虛幻......原來那家被吞嚥和吐出異常鏈中的過濾器...所以它絕不會傳播不夠高,由容器來處理!壞形式!我把它拿出來,現在一切都按預期工作......對不起,我很抱歉。

+0

發生在我們最好的:)但您有資格接受此答案。 – BalusC 2010-05-07 22:56:26

+0

它說我必須等待2天才能接受......哦,好吧......回到爲自己創造問題......再次感謝。 – danb 2010-05-07 23:03:05

1

確保/error.page是有效的映射。如果您的錯誤頁面本身有錯誤,它會導致tomcat顯示其通用錯誤頁面

+0

我懷疑這正是原因。 – 2010-05-07 19:10:26

+0

該頁面是一個有效的映射,是非常簡單的時刻,並返回沒有錯誤..我把它添加到問題..我也嘗試過一個普通的舊jsp – danb 2010-05-07 20:38:48

+0

如何使用而不是?像。我認爲匹配異常類型更復雜。 – os111 2010-05-07 22:11:28

0

通常,如果您使用的是/ErrorPage.jsp或/ ErrorPage,則需要在您的webapp/appname /目錄或Servlet中有一個JSP文件(在部署描述符中正確的URL映射)

此外,如果您使用的指令以及作爲DD,該指令將始終優先。

+0

我刪除了該指令,試圖讓DD工作。網址已正確映射 – danb 2010-05-07 20:39:28

+0

您可以重新啓動tomcat服務器並重試嗎? DD的任何更改都需要重新啓動。 – Epitaph 2010-05-07 20:58:24

+0

我已經重新啓動並完成了更多次,比我今天可以計算的次數多。 – danb 2010-05-07 21:18:16

2

確保如果/error.page映射到一個servlet,這個servlet實現了所有相關do方法(至少doPostdoGet)。

我曾面臨類似的問題(空白頁,什麼都不顯示的),因爲在我的初步實現,我只執行doGet

實際do呼叫可以匯聚在一個單一的方法,因爲錯誤的處理是在大多數情況下非常相似。

+0

error.page被映射並出現,因爲它應該當我衝浪到它..我只是使用Spring SimpleUrlHandlerMapping將.page網址映射到.jsp文件現在..但即使我切換到一個普通的舊jsp在DD我仍然得到空白頁面...即使當jsp基本上只是HTML。 – danb 2010-05-07 20:41:56

+0

@danb。我建議你將它映射到servlet並驗證在拋出異常時servlet的doGet/doPost方法會被調用。 – 2010-05-07 21:57:50

+0

我不知道發生了什麼事..我將一個非常簡單的servlet映射到/error.err並將它放在那裏...它沒有打到它..但是我可以手動打它。 – danb 2010-05-07 22:12:43

0

作爲一個建議,而不是僅僅顯示一個友好的信息給最終用戶,你也應該考慮做一些有用的東西有例外,如登錄,或通知人,它發生了。

request.getAttribute("javax.servlet.error.message"); 

並以豆或內聯JSP代碼塊使用這些屬性:

您可以通過訪問在所述請求中設定的各種屬性,例如這樣做。

查看http://metatations.com/2011/11/20/global-exception-handling-in-java/瞭解更多詳細說明。

+0

是的,這就是這個頁面的要點,我只是想設置管道,以便我可以在這個級別上進行理智的錯誤報告。我最終通過我的日誌記錄系統記錄了異常情況和關於用戶的一些信息,然後通過電子郵件發送給我們的支持系統。 – danb 2011-11-20 18:08:32

相關問題