Ho un ErrorFilter
che estende la molla GenericFilterBean
. Voglio mostrare una pagina di errore decorata con piastrelle se si verifica un errore.Impostazione nome vista nel filtro primavera
C'è un modo per impostare un nome di vista dal filtro?
<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>
Questa è la configurazione nel web.xml
e il metodo doFilter
nel errorfilter
è la seguente:
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);
}
}
L'ErrorPage corrente non è decorato con piastrelle, quindi voglio decorare con normale intestazione e piè di pagina e chiama tale nome vista dal filtro.
È possibile?
Edit: Fondamentalmente vogliamo essere in grado di fare qualcosa di simile al controller metodo cioè ritorno "nome di vista";
già provato:
- httpResponse.sendRedirect ("errorPageView"); non funziona, reindirizza a http://server/fooerrorPageView
- request.getRequestDispatcher ("errorPageView"). Inoltro (richiesta, risposta); fa, inoltre, non, simile come sopra (senza reindirizzamento HTTP, ma dà lo stesso "senza tale errore pagina" contenuti)
_sendRedirect_ reindirizzerà il browser del client all'URL specificato, ignorando qualsiasi risoluzione del nome di visualizzazione. –