从JSTL显示httpServletResponse.sendError(403,“我的消息”)状态的最简单方法是什么

时间:2009-07-09 15:01:17

标签: jsp servlets error-handling jstl

我有一个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语句中获取值?

2 个答案:

答案 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>