以下のようにweb.xmlを設定しました。また、任意の URL パターンを取り込み、対応する jsp に移動する注釈ベースのコントローラーもあります (-servlet.xml で設定しました)。ただし、.html で終わる (そして jsp が存在しない) ページに移動すると、カスタム 404 ページが表示されません (ログに以下のエラーが表示されます)。.html で終わらないページには、カスタム 404 ページが表示されます。
DispatcherServlet を通過するすべてのページにカスタム 404 ページを設定するにはどうすればよいですか?
また、エラー ページを静的ページ (つまり、error.htm) に設定すると機能しますが、それを jsp (つまり、error.jsp) に変更すると、IllegalStateException が発生します。どんな助けでも大歓迎です。
ログエラー
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)
コントローラ
@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>