覆盖JSP中的errorPage属性

时间:2009-10-16 17:11:47

标签: java jsp error-handling

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

Page指令:多次出现具有不同值的errorPage非法(old:/error.jsp,new:)

我有什么办法可以覆盖那个属性吗?或者有关如何防止此问题的任何其他建议?

3 个答案:

答案 0 :(得分:1)

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

  1. 不将您的标题包含在错误页面中。
  2. 确保您的错误页面不会自行抛出任何异常。它应该非常简单和直接 - 错误页面不适合业务逻辑。如果你想在那里做一些复杂的事情,可以考虑重新定向到另一个页面。

答案 1 :(得分:0)

为什么不为错误页面提供不同的包含标题,而不包括它?!!

所以,而不是:

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

你可以:

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

没有errorPage指令

修改标题以包含新标题。

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

这样你就不需要在jsp的其余部分中改变任何东西了

您只需要从以下位置更改您的errorPage:

 include="header.jsp"

 include="commonHeader.jsp"

并且errorPage将不再有错误页面....

答案 2 :(得分:0)

我最终只是通过用&lt;包围页面来处理它。 c:catch&gt;标签,以避免首先进行重定向,并打印一个例外的准系统消息,以确保它不会中断。