2010-12-14 9 views
8

He creado el manejo de excepciones en mi aplicación Spring utilizando Spring SimpleMappingExceptionResolver. Todo funciona bien Ahora necesito de alguna manera imprimir la excepción atrapada dentro de la página jsp. Algo así como el seguimiento de mensajes y pila. En mi jsp encontré el objeto de excepción en el atributo "excepción". Todo lo que tengo que hacer es algo así:Página de error: cómo imprimir el seguimiento de pila en JSP

${exception.printStackTrace()} 

Pero no sé cómo. ¿Hay alguna manera de cómo hacerlo? :-)

Gracias por cualquier sugerencia,

Mateo

+1

¿No puede encontrar la API para el nombre del método? http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Throwable.html#printStackTrace(). Las preguntas siempre deben indicar el tipo de error que está recibiendo. Incluso si lo es, esa línea no genera nada. –

+0

@Juan. Creo que @mateo significa que no puede encontrar una forma de imprimirStackTrace() en el contenido de la página, que es difícil de replicar exactamente sin el código en línea (eew) para establecer un PrintWriter alrededor de un StringWriter. –

Respuesta

17

La solución más fácil que se me ocurre es iterar sobre los elementos traza de pila, aprovechando la Throwable.getStackTrace() método:

<c:forEach items="${exception.stackTrace}" var="element"> 
    <c:out value="${element}" /> 
</c:forEach> 

que había necesidad de añadir algo de formato, por supuesto.

+1

+1. Pero uno realmente no debería imprimir stacktraces en un JSP. A los usuarios les encanta stacktraces;) – Bozho

+0

@Bozho: Aye. Supongo que esto es para fines de diagnóstico, pero para eso solo usaría la página de error predeterminada de Tomcat. Hola ho. – skaffman

+1

Sí, lo uso exactamente para fines de diagnóstico, no tengo acceso al registro de Tomcat y he personalizado esta página todavía. Así que pensé que esto sería más fácil que usar la página de error predeterminada de Tomcat :-) Pero de todos modos, gracias ... – mateo

2

Tuve que hacer esto (entorno dev/local solamente) en páginas anteriores y solo quiero mostrarlo en un área de texto o en un bloque preformateado. La salida de skaffman imprime cada elemento traza de trama pero no el mensaje y la clase de excepción.

Si lo quiere preformateado como en printStackTrace() considere utilizar Spring EL y commons-lang3.

<spring:eval expression="T(org.apache.commons.lang3.exception.ExceptionUtils).getStackTrace(exception)"/> 
Cuestiones relacionadas