2009-07-09 13 views
5

durum bazı hata denetimi yapan bir sunucu uygulamasını ve yanlış bir şey varsa bunu genellikle olacaktır: HttpServletResponse.sendError görüntülemek için en basit yolu nedir (403, "Mesajım") JSTL

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

I , sunucu durumundan bir istisna atmak istemiyor - çünkü HTTP durum kodlarına uymak istiyorum.

web.xml''deki ben şu yapılandırmış: Ben JSTL kullanımını ilan ettiler failure.jsp olarak

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

ve ben görüntülenen hata mesajları almak istiyorum.

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

Ama bazı c JSTL kullanmak istiyorum: Ben scriptlets aşağıdaki yapabileceğini de biliyorum ben scriptlets kullanarak bırakabilirsiniz eğer öyleyse fıkra, bu mutluluk duyacağız eğer.

JSTL'yi kullanarak hata sayfasındaki sunucudaki sendError ifadesinden değerleri nasıl kolayca alabilirim?

cevap

10

scriptlet:

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

aşağıdaki EL tercüme edilebilir:

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

Eğer Map yılında noktalar veya kapsamlı anahtar adları varsa notasyonu bean['foo.bar'] çok yararlıdır ayracı, bean.foo.bar açıkçası istenen Map değerini veya kapsam değerini döndürmediği için.

0

stackTrace ve mesaj özelliklerine sahip etiketinin sonunda (herhangi bir hata etiketlerin gövdesi arasında burada cereyan eden varsa) bir istisna nesnesi olacak bir özellik "var", bir JSTL etiket tanımlayın.

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

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

Bu işe yaramaz. JSP sayfası herhangi bir özel durumu yakalamaz - web.xml dosyasında bir hata sayfası olarak yapılandırılır. Bu senaryoda, istisna istekte bir özniteliktir, ancak anahtar oldukça gariptir ve JSTL'den nasıl başvuracağımı bilmiyorum. – tronda