In JSPs, you may use response.sendError(int code, String message)
to return a particular error code (eg 404 for not found) and a message as well.
These messages display fine, as long as you use the default ugly Tomcat error pages. However, if you create a custom error page, how do you get that message?
I've tried exception.getMessage()
or pageContext.getErrorData()
but no avail. I've been searching for this for like hours and nobody seems to even wonder about the same thing! :S
I forgot to mention I've only tried it with 404s so far, since that's what I need most... The exception is null for some reason, so trying anything on it throws a NullPointerException. The error page is a 404 error page, set via web.xml (since I want it to be displayed for EVERY single 404 error) and for anyone wondering, yes it has the isErrorPage directive set to true...
The error message is available via javax.servlet.error.message
attribute of the request object in error page jsp.
Here is the jsp syntax to access it:
<c:out value="${requestScope['javax.servlet.error.message']}"/>
You could look for other error related information available in the error page here under New Error Attributes.
Hmm exception.getMessage()
should work
Try adding exception.getClass().getName()
NullPointerException
which has no messageOf course this only works, if I remember correctly, if the error is thrown by a jsp with <%@ page errorPage="/yourerrorpage.jsp" %>
at the top.
If the error comes from a servlet the exception details are passed as request attributes
javax.servlet.error.status_code java.lang.Integer
javax.servlet.error.exception_type java.lang.Class
javax.servlet.error.message java.lang.String
javax.servlet.error.exception java.lang.Throwable
javax.servlet.error.request_uri java.lang.String
javax.servlet.error.servlet_name java.lang.String
Check the Servlet Specification (link is broken since ~2011) section 9.9
I'm sorry for answering so late, but I faced with this problem just a week ago, I've browsed a lot of different sites but nobody really aswered this problem the way I wanted to hear. In this post I found out a few interesting solutions and then came up to my own. Just include this source in your page:
<%
out.println(pageContext.getErrorData().getRequestURI());
out.println("<br/>");
out.println(pageContext.getErrorData().getStatusCode());
out.println("<br/>");
out.println(pageContext.getException());
out.println("<br/>");
%>
It worked perfectly fine with me.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With