2010-12-14 53 views
8

J'ai créé la gestion des exceptions dans mon application Spring en utilisant spring SimpleMappingExceptionResolver. Tout fonctionne bien. Maintenant, j'ai besoin d'imprimer l'exception interceptée dans la page jsp. Quelque chose comme un message et une trace de pile. Dans mon jsp, j'ai trouvé l'objet d'exception dans l'attribut "exception". Tout ce que je dois faire est quelque chose comme ça:Page d'erreur - comment imprimer la trace de la pile dans JSP

${exception.printStackTrace()} 

Mais je ne sais pas comment. Est-il possible comment faire? :-)

Merci pour toute suggestion,

Mateo

+1

Vous ne trouvez pas l'API pour le nom de la méthode? http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Throwable.html#printStackTrace(). Les questions doivent toujours indiquer le type d'erreur que vous obtenez. Même si c'est le cas, cette ligne ne sort rien –

+0

@Juan Je crois que @mateo signifiait qu'il ne pouvait pas trouver un moyen de printStackTrace() dans le contenu de la page, ce qui est difficile à répliquer exactement sans code en ligne (eew) un PrintWriter autour d'un StringWriter. –

Répondre

17

La solution la plus simple que je peux penser est en boucle sur les oligo-éléments de la pile, en profitant de la Throwable.getStackTrace() méthode:

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

vous aurez besoin d'ajouter une mise en forme, bien sûr.

+1

+1. Mais il ne faut pas vraiment imprimer des stacktraces dans une JSP. Les utilisateurs aiment stacktraces;) – Bozho

+0

@Bozho: Aye. Je suppose que c'est à des fins de diagnostic, mais pour cela, je voudrais juste utiliser la page d'erreur par défaut de Tomcat. Hé ho. – skaffman

+1

Oui, je l'utilise exactement à des fins de diagnostic, je n'ai pas accès au journal Tomcat et j'ai personnalisé cette page pour le moment. J'ai donc pensé que ce serait plus facile que d'utiliser à nouveau la page d'erreur par défaut de Tomcat :-) Mais de toute façon, merci ... – mateo

2

A dû le faire (environnement de développement/local seulement) dans les pages dans le passé et je veux juste l'afficher dans une zone de texte ou un bloc préformaté. La sortie de skaffman imprime chaque élément trace strack mais pas la classe message et exception.

Si vous voulez le pré-formaté selon printStackTrace(), utilisez Spring EL et commons-lang3.

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