2010-12-14 21 views
8

Utworzono wyjątek w mojej aplikacji Spring przy użyciu Spring SimpleMappingExceptionResolver. Wszystko dziala. Teraz muszę jakoś wydrukować złapany wyjątek na stronie jsp. Coś jak komunikat i ślad stosu. W moim jsp znalazłem obiekt wyjątku w atrybucie "wyjątek". Wszystko, co muszę zrobić, to coś takiego:Strona błędu - jak wydrukować ślad stosu w JSP

${exception.printStackTrace()} 

Ale nie wiem jak. Czy jest jakiś sposób, jak to zrobić? :-)

Dzięki za wszelkie sugestie,

Mateo

+1

Nie możesz znaleźć API dla nazwy metody? http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Throwable.html#printStackTrace(). Pytania powinny zawsze podawać listę błędów, które otrzymujesz. Nawet jeśli tak jest, ta linia nic nie wyprowadza –

+0

@Juan Wierzę, że @mateo oznaczało, że nie może znaleźć sposobu na wydrukStackTrace() w treści strony, która jest trudna do skopiowania dokładnie bez kodu wbudowanego (eew) do ustawienia w górę PrintWriter wokół StringWriter. –

Odpowiedz

17

Najprostszym rozwiązaniem można myślę, jest do pętli nad pierwiastków śladowych stosu, korzystając z Throwable.getStackTrace() metoda:

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

trzeba by dodać formatowanie, oczywiście.

+1

+1. Ale nie należy tak naprawdę drukować stosów w JSP. Użytkownicy uwielbiają stosy stacków;) – Bozho

+0

@Bozho: Aye. Zakładam, że jest to do celów diagnostycznych, ale do tego chciałbym użyć domyślnej strony błędu Tomcata. Hej ho. – skaffman

+1

Tak Używam go dokładnie w celach diagnostycznych, nie mam dostępu do dziennika Tomcat i dostosowałem tę stronę jeszcze. Pomyślałem więc, że będzie to łatwiejsze niż ponowne użycie domyślnej strony błędu Tomcata :-) Ale w każdym razie, dzięki ... – mateo

2

Musiałem to zrobić (tylko środowisko lokalne/dev) na stronach w przeszłości i po prostu chcę go wyświetlić w textarea lub preformatowanym bloku. Dane wyjściowe ze skaffmana wypisują każdy element śledzenia łańcuchowego, ale nie klasę komunikatu i wyjątku.

Jeśli chcesz to wstępnie sformatowane zgodnie z printStackTrace(), rozważ użycie Spring EL i commons-lang3.

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