在JSP中,可以使用response.sendError(int code, String message)
返回特定的错误代码(例如404表示找不到)和一条消息。只要使用默认的丑陋的Tomcat错误页,这些消息就会显示得很好。但是,如果创建一个自定义错误页,你是怎么得到这个消息的?我试过exception.getMessage()
或pageContext.getErrorData()
,但没有用。我已经找了几个小时,似乎没有人甚至想知道同样的事情!
我忘了提一下,到目前为止我只在404上试过,因为这是我最需要的...异常由于某种原因为null,所以在它上面尝试任何东西都会抛出一个NullPointerException。错误页面是一个404错误页面,通过web.xml设置(因为我希望它在每个404错误时都显示出来),对于任何想知道的人,是的,它的isErrorPage指令设置为true...
7条答案
按热度按时间6qqygrtg1#
错误消息可通过错误页面jsp中请求对象的
javax.servlet.error.message
属性获得。下面是访问它的jsp语法:
您可以在错误页面here的 * 新错误属性 * 下查找其他错误相关信息。
aoyhnmkz2#
嗯
exception.getMessage()
应该可以尝试添加
exception.getClass().getName()
1.它可能是没有消息的
NullPointerException
1.或者异常不是来自Sun并且消息设置不正确
当然,如果我没记错的话,只有当错误是由顶部带有
<%@ page errorPage="/yourerrorpage.jsp" %>
的jsp抛出时,这才有效。如果错误来自servlet,则异常详细信息将作为请求属性传递
检查Servlet Specification(自2011年起链路断开)第9.9节
fcipmucu3#
我很抱歉这么晚才回答,但我一周前才遇到这个问题,我浏览了很多不同的网站,但没有人真正回答这个问题的方式,我想听到的。在这篇文章中,我发现了一些有趣的解决方案,然后来到了我自己的。只要包括这个来源在您的页面:
对我来说很好用。
pftdvrlh4#
仅当错误页是由于异常而不是响应错误代码加载时,才会设置
ErrorData
的exception
部分。参见javadoc中
sendError
的HttpServletResponse
,它提到了为什么你看不到你传递给sendError
的消息(着重号是我的):使用指定的状态向客户端发送错误响应。服务器默认创建的响应类似于包含指定消息的HTML格式的服务器错误页,内容类型设置为“text/html”,Cookie和其他标头保持不变。如果已为与传入的状态代码对应的Web应用程序进行错误页声明,它将优先于建议的MSG参数而被服务回来。
如果响应已提交,则此方法引发IllegalStateException。使用此方法后,响应应视为已提交,不应写入。
anauzrmj5#
你想要的东西在我看来很奇怪:)。话虽如此,我会做以下几点:
1.实现
HttpResponseWrapper
,以如下方式 Package 任何其他HttpResponse
:1.创建一个过滤器并将任何响应 Package 在此
1.将筛选器放在所有请求上,并放在链中的第一位
1.在错误页面中检查响应是否为
HttpResponseWrapper
的示例1.获取您的消息
jhkqcmku6#
您可以使用
如果页面上没有jstl
6g8kf2rb7#
您可以使用