代码之家  ›  专栏  ›  技术社区  ›  tronda Bahribayli

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

  •  6
  • tronda Bahribayli  · 技术社区  · 17 年前

    我有一个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,我希望显示错误消息。我知道我可以在scriptlets中执行以下操作:

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

    但是我想将JSTL与一些C:if子句结合使用,所以如果我可以使用scriptlet来删除,这将是非常感谢的。

    如何使用JSTL轻松地从错误页中servlet的sendError语句中获取值?

    2 回复  |  直到 14 年前
        1
  •  11
  •   BalusC    16 年前

    小脚本:

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

    可转换为以下EL:

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

    大括号符号 bean['foo.bar'] 如果你有点的话很有用 Map 或范围键名称,因为 bean.foo.bar 很明显,不返回所需的 地图 或范围值。

        2
  •  0
  •   Greenhorn    17 年前

    声明一个属性为“var”的JSTL标记,该标记的末尾将有一个异常对象(如果标记体之间发生错误),该对象具有stacktrace和message属性。

    <c:catch var="myException">
    <%int x=10/0; %>
    </c:catch>
    
    <c:if test="${myException !=null}">
    There was an exception: ${myException.message} 
    </c:if>