Ich habe eine ErrorFilter
, die die Feder erweitert GenericFilterBean
. Ich möchte eine Fehlerseite anzeigen, die mit Kacheln versehen ist, wenn ein Fehler auftritt.Einstellung Ansicht Name im Frühjahr Filter
Gibt es eine Möglichkeit, einen Ansichtsnamen aus dem Filter zu setzen?
<filter>
<filter-name>errorFilter</filter-name>
<filter-class>com.abc.filter.ErrorFilter</filter-class>
<init-param>
<param-name>errorPage</param-name>
<param-value>/jsp/errorpage.jsp</param-value>
</init-param>
</filter>
Dies ist die Konfiguration in web.xml
und die doFilter
Methode in errorfilter
ist die folgende:
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpReq = (HttpServletRequest) req;
StringBuffer reqUrl = httpReq.getRequestURL();
try {
chain.doFilter(req, resp);
} catch (Exception ex) {
String requestRepresentation = createRequestRepresentation(req);
errorService.handleException(reqUrl.toString(), ex, requestRepresentation);
req.getRequestDispatcher(
getFilterConfig().getInitParameter("errorPage")).forward(req, resp);
} catch (Error er) {
errorService.handleError(reqUrl.toString(), er);
req.getRequestDispatcher(
getFilterConfig().getInitParameter("errorPage")).forward(req, resp);
}
}
Die aktuelle Errorpage nicht mit Kacheln dekoriert, so will ich es dekorieren mit normalen Kopf- und Fußzeile und rufen Sie diesen Ansichtsnamen aus dem Filter.
Ist es möglich?
Edit: Grundsätzlich wollen wir in der Lage sein, etwas zu tun, ähnlich wie Controller-Methode heißt return „Viewname“;
bereits versucht:
- httpResponse.sendRedirect ("errorPageView"); funktioniert nicht, leitet es um http://server/fooerrorPageView
- request.getRequestDispatcher ("errorPageView"). Forward (Anforderung, Antwort); auch nicht ähnlich, wie oben (ohne HTTP-Umleitung, sondern gibt die gleiche „keine solche Seitenfehler“ content)
_sendRedirect_ leitet den Client-Browser einfach zur angegebenen URL um, wobei die Auflösung des Ansichtsnamens umgangen wird. –