PROBLEMA<error-page> impostazione non funziona in Spring MVC
voglio mostrare agli utenti una pagina di errore personalizzata. Simeply put, <error-page>
su web.xml non sembra funzionare. Posso indovinare qual è il problema, ma ho bisogno di imparare perché esattamente non funziona.
mio setup
ho creato <error-page>
su web.xml nella mia applicazione MVC primavera. Di seguito sono le impostazioni.
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
<url-pattern>*.*</url-pattern>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<error-page>
<error-code>404</error-code>
<location>/error</location>
</error-page>
E la mia pagina di errore si trova proprio nel ...
WEB-INF
└ views
└ Errorpages
└ ErrorPage.jsp
Per il vostro infomation, ho provato queste cose qui di seguito pure, ma nessuna di queste cose ha funzionato.
<error-page>
<error-code>404</error-code>
<location>/WEB-INF/views/Errorpages/ErrorPage.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/views/Errorpages/ErrorPage.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/Errorpages/ErrorPage.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/ErrorPage.jsp</location>
</error-page>
<!-- Or tried those above without the .jsp that comes after ErrorPage -->
<!-- And also, tried those after moving the resources out of WEB-INF -->
secondo tentativo
ho guardato il log del server e ho notato che la primavera prova a cercare le risorse da redirecion, così ho cambiato il mio piano e ho cercato di raggiungere questo obiettivo attraverso vista tipica ritorno Spring MVC
.
ho fatto questa azione
@RequestMapping("/error")
public String throwsErrorPage(Locale locale, Model model) {
logger.info("Errorpage action..." + locale.getLanguage());
return "/Errorpages/ErrorPage";
}
Quello che mi aspettavo era in parte ragione, perché richiama con successo l'azione. Il mio log del server lo rende chiaro.
WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/notfound] in DispatcherServlet with name 'appServlet'
INFO : com.company.web.controller.HomeController - Errorpage action...ko
Come potete vedere, ho generato 404 errore digitando notfound su URL, e reindirizza a /errore come ho specificato il <location>
in web.xml. Ma non restituisce la vista.
per assicurarsi che l'azione restituisce una visione, ho provato a cambiare il tipo di azione come ...
@RequestMapping("/error")
public ModelAndView throwsErrorPage(Locale locale, ModelAndView mv) {
logger.info("Errorpage action..." + locale.getLanguage());
return mv.setViewName("/Errorpages/ErrorPage");
}
Ma non funziona così ...
Strano cosa
è che se chiamo l'azione tramite localhost:8080/error
sicuramente chiama l'azione e restituisce la pagina di errore atteso. Beh, ci dovrebbero essere alcune differenze tra reindirizzamento e richiesta tipica digitando qualcosa su url o ajax.
Quello che voglio sapere
- Come posso fare
<error-page>
lavoro di configurazione? - Quali sono le differenze tra il reindirizzamento automatico di
Spring
e la richiesta tipica di un'azione utente inSpring MVC
?
Spostare la pagina di errore non era la risposta, mi dispiace. E il tipo di eccezione non è rilevante per il mio problema .. – hina10531