2009-07-09 4 views
5

Ich habe ein Servlet, die eine gewisse Fehlerprüfung funktioniert und wenn etwas falsch ist, werde ich normalerweise tun dies: Was ist der einfachste Weg httpServletResponse.sendError anzuzeigen (403, „My Message“) Status von JSTL

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

I nicht möchte eine Ausnahme vom Servlet werfen - weil ich mit HTTP-Statuscodes übereinstimmen möchte.

In der web.xml habe ich folgendes konfiguriert:

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

Im failure.jsp ich den Gebrauch von JSTL erklärt haben, und ich möchte die Fehlermeldungen angezeigt bekommen. Ich weiß, dass ich folgend in Scriptlets tun kann:

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

Aber ich würde JSTL gerne mit etwas c verwenden: if-Klausel so, wenn ich Scriptlets mit absinken kann, dies würde geschätzt.

Wie kann ich einfach die Werte aus der sendError-Anweisung im Servlet auf der Fehlerseite mit JSTL abrufen?

Antwort

10

Die scriptlet:

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

können an folgende EL übersetzt werden:

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

Die Klammer-Notation bean['foo.bar'] sehr nützlich, wenn Sie Punkte in Map oder scoped Schlüsselnamen haben, weil bean.foo.bar offensichtlich nicht den gewünschten Map oder scoped Wert zurückgibt.

0

Deklarieren Sie ein JSTL-Tag mit einem Attribut "var", das am Ende des Tags ein Ausnahmeobjekt (wenn ein Fehler zwischen dem Hauptteil der Tags aufgetreten ist) mit den Eigenschaften stackTrace und message aufweist.

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

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

Dies wird nicht funktionieren. Die JSP-Seite erfasst keine Ausnahme - sie ist in der Datei web.xml als Fehlerseite konfiguriert. In diesem Szenario ist die Ausnahme ein Attribut in der Anforderung, aber der Schlüssel ist ziemlich umständlich und ich bin nicht sicher, wie ich ihn von JSTL aus referenzieren soll. – tronda