2009-07-09 8 views
5

से स्थिति मैं एक सर्वलेट जो कुछ त्रुटि जाँच करता है और यदि कुछ गलत है मैं इस आम तौर पर क्या करेंगे: httpServletResponse.sendError प्रदर्शित करने के लिए सबसे आसान तरीका क्या है (403, "मेरा संदेश") JSTL

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

I सर्वलेट से अपवाद फेंकना नहीं चाहता - क्योंकि मैं HTTP स्टेटस कोड के अनुरूप होना चाहता हूं।

web.xml में मैं निम्नलिखित कॉन्फ़िगर किया है:

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

failure.jsp मैं JSTL के उपयोग में घोषणा की है और मैं त्रुटि संदेश प्रदर्शित प्राप्त करना चाहते हैं। मुझे पता है कि मैं scriptlets में निम्न कर सकते हैं:

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

लेकिन मैं कुछ ग के साथ JSTL उपयोग करना चाहते हैं: यदि खंड इसलिए यदि मैं scriptlets का उपयोग कर छोड़ सकते हैं, इस की सराहना की जाएगी।

कैसे मैं आसानी से JSTL का उपयोग करके त्रुटि पृष्ठ में सर्वलेट में sendError बयान से मूल्यों को प्राप्त कर सके?

उत्तर

10

स्क्रिप्टलेट:

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

निम्नलिखित ईएल में अनुवाद किया जा सकता है:

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

ब्रेस अंकन bean['foo.bar'] बहुत उपयोगी है अगर आप Map में डॉट्स या scoped कुंजी नाम है, क्योंकि bean.foo.bar स्पष्ट रूप से वांछित Map या स्कॉप्ड मान वापस नहीं करता है।

0

एक विशेषता "var" के साथ एक जेएसटीएल टैग घोषित करें, जिसमें टैग के अंत में एक अपवाद ऑब्जेक्ट (टैग के शरीर के बीच कोई त्रुटि हुई है), जिसमें स्टैकट्रेस और संदेश गुण हैं।

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

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

यह काम नहीं करेगा। जेएसपी पेज को कोई अपवाद नहीं है - इसे web.xml में एक त्रुटि पृष्ठ के रूप में कॉन्फ़िगर किया गया है। इस परिदृश्य में अपवाद अनुरोध में एक विशेषता है, लेकिन कुंजी बल्कि अजीब है और मुझे यकीन नहीं है कि जेएसटीएल से इसका संदर्भ कैसे लें। – tronda

संबंधित मुद्दे