2009-07-09 17 views
5

我有一個servlet,做一些錯誤檢查,如果事情是錯了,我通常會做到這一點: 什麼是顯示httpServletResponse.sendError最簡單的方法(403,「我的信息」)的狀態從JSTL

response.sendError(403, "My message") 
return; 

不要想從servlet中拋出異常 - 因爲我想符合HTTP狀態碼。

在web.xml中我已經配置如下:

<error-page> 
    <error-code>403</error-code> 
    <location>/failure.jsp</location> 
</error-page> 

在我宣佈JSTL的用法failure.jsp,我想獲得所顯示的錯誤消息。我知道我能做到在小腳本如下:

 
<%= request.getAttribute("javax.servlet.error.message") %> 

但我想使用JSTL一些C:if語句,所以如果我可以刪除使用小腳本,這將不勝感激。

如何使用JSTL輕鬆地從錯誤頁面中的servlet中的sendError語句獲取值?

回答

10

的小腳本:

<%= request.getAttribute("javax.servlet.error.message") %> 

可以翻譯爲以下EL:

${requestScope['javax.servlet.error.message']} 

的支柱,如果你有Map點或範圍的按鍵名稱符號bean['foo.bar']是非常有用的,因爲bean.foo.bar顯然不會返回所需的Map或範圍值。

0

聲明一個屬性爲「var」的JSTL標籤,該標籤將在標籤結尾處具有一個異常對象(如果在標籤主體之間發生任何錯誤),該對象具有stackTrace和消息屬性。

<c:catch var="myException"> 
<%int x=10/0; %> 
</c:catch> 

<c:if test="${myException !=null}"> 
There was an exception: ${myException.message} 
</c:if> 
+1

這不會工作。 JSP頁面沒有捕獲任何異常 - 它在web.xml中被配置爲錯誤頁面。在這種情況下,異常是請求中的一個屬性,但關鍵是比較尷尬,我不確定如何從JSTL中引用它。 – tronda 2009-07-09 21:39:04

相關問題