PROBLEMU<error-page> konfiguracja nie działa w Spring MVC
Chcę pokazać użytkownikowi niestandardowej strony błędu. Simeply put, <error-page>
na web.xml nie działa. Mogę zgadnąć, jaki jest problem, ale muszę się dowiedzieć, dlaczego dokładnie to nie działa.
mojej konfiguracji
skonfigurować <error-page>
na web.xml w mojej aplikacji MVC wiosny. Poniżej znajdują się ustawienia.
<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>
A moja strona błędu znajduje się w samym ...
WEB-INF
└ views
└ Errorpages
└ ErrorPage.jsp
Dla Twojej infomation, próbowałem tych rzeczy poniżej, jak również, ale żadna z tych rzeczy działało.
<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 -->
drugiej próbie
Spojrzałem na dzienniku serwera i zauważył, że sprężyna próbuje zajrzeć do zasobów przez redirecion, więc zmieniłem plan i próbował acheive ten cel poprzez typowy powrót widoku w Spring MVC
.
Zrobiłem to działanie
@RequestMapping("/error")
public String throwsErrorPage(Locale locale, Model model) {
logger.info("Errorpage action..." + locale.getLanguage());
return "/Errorpages/ErrorPage";
}
czego się spodziewałem po części rację, ponieważ z powodzeniem wywołuje działania. Dziennik Mojego serwera wyjaśnia.
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
Jak widać, ja wygenerowany błąd 404, wpisując notfound na URL i przekierowuje do /błędu jak podano na <location>
w web.xml. Ale nie zwraca widoku.
Aby upewnić się, że akcja zwraca pogląd, próbowałem zmiany typu działaniem niczym ...
@RequestMapping("/error")
public ModelAndView throwsErrorPage(Locale locale, ModelAndView mv) {
logger.info("Errorpage action..." + locale.getLanguage());
return mv.setViewName("/Errorpages/ErrorPage");
}
Ale to nie działa tak dobrze ...
Strange rzecz
jest to, że jeśli zadzwonię do akcji przez localhost:8080/error
, to z pewnością wywoła akcję i zwróci oczekiwaną stronę błędu. Cóż, powinny istnieć pewne różnice między przekierowaniem a typową prośbą przez wpisanie czegoś na adres url lub ajax.
Co chcę wiedzieć
- Jak mogę dokonać
<error-page>
pracę konfiguracji? - Jakie są różnice między automatycznym przekierowaniem przez
Spring
a typowym żądaniem z działania użytkownika wSpring MVC
?
Usunięcie strony błędu nie było odpowiedzią, przepraszam. Typ wyjątku nie ma związku z moim problemem. – hina10531