Ustawiłem web.xml jak poniżej. Mam również kontroler oparty na adnotacjach, który przyjmuje dowolny wzorzec URL, a następnie przechodzi do odpowiedniego jsp (ustawiłem to w pliku -servlet.xml). Jednak jeśli przejdę do strony, która kończy się .html (i której jsp nie istnieje), nie widzę niestandardowej strony 404 (i zobacz poniżej błąd w dzienniku). Każda strona, która nie kończy się na .html, widzę niestandardową stronę 404.Niestandardowe 404 przy użyciu Spring DispatcherServlet
Jak skonfigurować, aby mieć niestandardową stronę 404 dla dowolnej strony, która przechodzi przez DispatcherServlet?
Chcę również dodać, że jeśli ustawię stronę błędu na statyczną stronę (np. Error.htm), to działa, ale jeśli zmienię ją na jsp (np. Error.jsp), otrzymam wyjątek IllegalStateException. Każda pomoc będzie doceniona.
error log
Caused by: java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:606)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:195)
at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:124)
kontroler
@RequestMapping(value = {"/**"})
public ModelAndView test() {
ModelAndView modelAndView = new ModelAndView();
return modelAndView;
}
web.xml
<servlet>
<servlet-name>my_servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
...
<servlet-mapping>
<servlet-name>my_servlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
...
<error-page>
<error-code>404</error-code>
<location>/error.html</location>
</error-page>
Spróbuj tego -> http://ekiras.blogspot.in/ 2015/02/custom-error-404-error-page-in-spring-mvc.html –