代码之家  ›  专栏  ›  技术社区  ›  Andrew K

覆盖JSP中的errorPage属性

  •  1
  • Andrew K  · 技术社区  · 17 年前

    我已经定义了 <%@ page errorPage="/error.jsp" %> 在所有JSP文件包含的标头中,捕获任何未处理的异常并重定向到该错误页面,而不是打印它们。这很好,但有一个警告——如果error.jsp本身抛出异常,它将在无限循环中不断重定向到自身。我想删除error.jsp的errorPage值,这样它就可以正常打印异常。我尝试将errorPage属性重新定义为空,但得到以下错误:

    我有办法覆盖那个属性吗?或者关于如何防止这个问题的任何其他建议?

    3 回复  |  直到 17 年前
        1
  •  1
  •   ChssPly76    17 年前

    拥有多个确实是违法的 page 具有相同属性的声明。您的选择是:

    1. 不要将标题包含在错误页面中。
    2. 确保错误页面本身不会抛出任何异常。它应该非常简单明了——错误页面不是业务逻辑的地方。如果你想在那里做一些复杂的事情,可以考虑重定向到另一个页面。
        2
  •  0
  •   OscarRyz    17 年前

    为什么你不为错误页面设置一个不同的包含头,而不包括它自己呢?!!

    因此,与其拥有:

    header.jsp
    ==========
    a
    b
    c
    errorPage=error.jsp
    

    你可以:

    commonHeader.jsp
    ===========
    a
    b
    c
    

    没有errorPage指令

    header.jsp
    ===========
    include=commonHeader.jsp
    errorPage=error.jsp
    

    您只需将错误页面从以下位置更改为:

     include="header.jsp"
    

    到

     include="commonHeader.jsp"
    

    errorPage将不再有错误页面。...

        3
  •  0
  •   Andrew K    15 年前

    最后,我只需在页面周围加上<c:捕获>标记以避免首先进行重定向,并打印一条基本消息,以确保它不会中断。