Custom error page.........please help me

G

gbattine

Hi guys,
i'm working on a jsf application and i've decided to use a custom error
page.
What i want is displaying the stacktrace of the application level'
exceptions like nullpointer,mysql exceptions etc....in a custom error
page.
I've followed an example at the end of core java server faces book but
it's doesn' work!!
Please help me,these are my steps...
i've defined in my web.xml

<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<error-page>
<error-code>500</error-code>
<location>/errorDisplay.jsp</location>
</error-page>



i've errorDisplay.jsp

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<html>

<f:subview id="dummy">
<head>

<title><h:eek:utputText value="Problema nell'applicazione"/></title>
</head>
<body>
<h:form>
<p><h:eek:utputText value="Un errore è stato riscontrato"/></p>

<p><h:eek:utputText value="Ecco lo stacktrace"/></p>
<h:inputTextarea value="#{errorBean.stackTrace}"
rows="40" cols="80" readonly="true"/>
</h:form>
</body>
</f:subview>
</html>



and this is my managed bean ErrorBean.java

package giu;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.sql.SQLException;
import java.util.Map;
import javax.faces.context.FacesContext;
import javax.servlet.ServletException;

public class ErrorBean {
public String getStackTrace() {
FacesContext context = FacesContext.getCurrentInstance();
Map request = context.getExternalContext().getRequestMap();
Throwable ex = (Throwable)
request.get("javax.servlet.error.exception");
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
fillStackTrace(ex, pw);
return sw.toString();
}

private static void fillStackTrace(Throwable t, PrintWriter w) {
if (t == null)
return;
t.printStackTrace(w);
if (t instanceof ServletException) {
Throwable cause = ((ServletException) t).getRootCause();
if (cause != null) {
w.println("Root cause:");
fillStackTrace(cause, w);
}
} else if (t instanceof SQLException) {
Throwable cause = ((SQLException) t).getNextException();
if (cause != null) {
w.println("Next exception:");
fillStackTrace(cause, w);
}
} else {
Throwable cause = t.getCause();
if (cause != null) {
w.println("Cause:");
fillStackTrace(cause, w);
}
}
}
}



I cause mysql exceptions in my application,but i see the standard stack
trace,not my jsp page with stack trace..
i think my error is in web.xml in which 500 is only a type of
error....i've to adding mysql exceptions????
How can i do it?
Please help me
 
M

Manish Pandit

You can add exceptions to the same fragment by doing :

<error-page>
<exception-type>your.package.your.exception</exception-type>
<location>/errorDisplay.jsp</location>
</error-page>

-cheers,
Manish
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top