Mam projekt Spring MVC, w którym używam porady kontrolera do obsługi błędów generowanych w kontrolerach. Jednak chcę również wyświetlać ładną stronę błędu, jeśli wystąpi błąd w plikach JSP (nawet jeśli tak naprawdę nie powinno się zdarzyć!). Dlatego dodałem następujące do mojego projektu web.xml
pliku:Strona błędu JSP dołączona do poprzedniego wyjścia
<error-page>
<error-code>500</error-code>
<location>/WEB-INF/views/application/error/view-error.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/WEB-INF/views/application/error/view-error.jsp</location>
</error-page>
Gdybym wywołać błąd w JSTL celowo zawartość view-error.jsp
jest renderowany w porządku. Jednak treść jest dołączona dołączona do wyjścia pliku JSP, w którym wystąpił błąd. Na przykład, jeśli wystąpi błąd w ciągu display-users.jsp
w linii 50, wynikiem jest, że wyjście, które zostało wygenerowane przed wystąpieniem błędu (linia 1-50) jest poprzedzone treścią w view-error.jsp
.
Jest to bardzo niepożądane, ponieważ generuje wyglądającą stronę błędu. A ponieważ nie mogę stwierdzić, gdzie zostanie zgłoszony wyjątek (gdybym mógł, naprawiłbym błąd), to, co widzi użytkownik, najprawdopodobniej będzie źle wyglądać.
Chyba dlatego, że dane wyjściowe znajdują się już w buforze i mogły już zostać wysłane do klienta? Czy jest jakiś sposób, żeby to naprawić, czy może alternatywne podejście? Dzięki!
Program operacyjny nie oznacza, że korzysta ze skryptletów. Wszystko o czym wspomniał to JSTL, więc może to być proste '
GriffeyDog
@GriffeyDog Masz rację, moja odpowiedź jest prawdopodobnie zbyt ogólna. Ale błędy w '' lub '
Masz rację, jednak nie używam skryptletów. Używam wyłącznie JSTL. Większość tego, co dzieje się w moich plikach JSP, to przeglądanie danych, a także proste sprawdzanie warunkowe - wszystko za pomocą JSTL. Niestety, niektóre strony JSP mają nieco bardziej skomplikowane rzeczy, a obecnie refaktoryzacja nie ma priorytetu. Dlatego chciałbym mieć tę "siatkę bezpieczeństwa". Rozmiar całej strony bez błędów wynosi 9 KB, a nawet jeśli wywołuję błąd w górnej części, nadal tak się dzieje, więc nie sądzę, że jest to spowodowane ilością HTML. Dziękuję za Twoją odpowiedź! – Andy0708