Ho un progetto Spring MVC in cui sto utilizzando i consigli del controller per gestire gli errori generati nei controller. Tuttavia, voglio anche mostrare una bella pagina di errore se si verifica un errore nei file JSP (anche se questo non dovrebbe accadere davvero!). Quindi ho aggiunto quanto segue al fascicolo di mio progetto web.xml
:Pagina di errore JSP aggiunta all'output precedente
<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>
Se io attivare un errore in JSTL di proposito, il contenuto di view-error.jsp
è resa bene. Tuttavia, il contenuto è aggiunto all'output del file JSP in cui si è verificato l'errore. Ad esempio, se si verifica un errore entro display-users.jsp
alla riga 50, il risultato è che l'output generato prima dell'errore (riga 1-50) viene anteposto al contenuto in view-error.jsp
.
Questo è molto indesiderabile in quanto genera una pagina di errore dall'aspetto originale. E dato che non posso dire dove verrà lanciata un'eccezione (se potessi, correggerei l'errore), allora è molto probabile che l'utente veda un aspetto negativo.
Suppongo che sia perché l'output è già nel buffer e potrebbe essere già stato inviato al client? C'è un modo per sistemarlo, o forse un approccio alternativo? Grazie!
L'OP non indica che sta facendo uso di scriptlet. Tutto quello che ha menzionato è JSTL, quindi potrebbe essere solo un semplice '
GriffeyDog
@GriffeyDog Hai ragione, la mia risposta è probabilmente troppo generica. Ma gli errori in '' o '
Sei corretto, tuttavia, non sto usando gli scriptlet. Uso esclusivamente JSTL. La maggior parte di ciò che accade nei miei file JSP è la ripetizione dei dati e semplici controlli condizionali, il tutto con JSTL. Sfortunatamente, alcuni JSP hanno cose leggermente più complicate e in questo momento il refactoring non ha avuto la priorità. Ecco perché mi piacerebbe avere questa "rete di sicurezza". La dimensione della pagina intera senza errori è 9 KB, e anche se faccio scattare l'errore nella parte superiore, ciò accade ancora, quindi non penso che sia causato dalla quantità di HTML. Grazie per la risposta! – Andy0708