我有一个servlet执行一些错误检查,如果出现问题,我通常会这样做:
response.sendError(403, "My message")
return;
我不想要从servlet中抛出异常 - 因为我想要符合HTTP状态代码。
在web.xml中我配置了以下内容:
<error-page>
<error-code>403</error-code>
<location>/failure.jsp</location>
</error-page>
在failure.jsp中,我声明了JSTL的使用,我希望显示错误消息。我知道我可以在scriptlet中执行以下操作:
<%= request.getAttribute("javax.servlet.error.message") %>
但是我想使用JSTL和一些c:if子句,所以如果我可以使用scriptlet,我们将不胜感激。
如何使用JSTL轻松从错误页面的servlet中的sendError语句中获取值?
答案 0 :(得分:11)
小脚本:
<%= request.getAttribute("javax.servlet.error.message") %>
可以翻译成以下EL:
${requestScope['javax.servlet.error.message']}
如果您在bean['foo.bar']
或作用域键名中有点,则括号符号Map
非常有用,因为bean.foo.bar
显然不会返回所需的Map
或作用域值
答案 1 :(得分: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>