public class FacesExceptionFilter extends HttpFilter
The FacesExceptionFilter
will solve 2 problems with exceptions thrown in JSF methods.
FacesFileNotFoundException
needs to be interpreted as 404.
FacesException
and ELException
to utilize standard
Servlet API error page handling.
Noted should be that this filter won't run on exceptions thrown during ajax requests. To handle them using
web.xml
configured error pages, use FullAjaxExceptionHandler
.
Since version 3.2, the FacesExceptionFilter
also logs exceptions with an UUID and IP via the
logException(HttpServletRequest, Throwable, String, String, Object...)
method. The UUID is in turn available
in EL by #{requestScope['org.omnifaces.exception_uuid']}
.
To get it to run, map this filter on an <url-pattern>
of /*
in web.xml
.
<filter> <filter-name>facesExceptionFilter</filter-name> <filter-class>org.omnifaces.filter.FacesExceptionFilter</filter-class> </filter> <filter-mapping> <filter-name>facesExceptionFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
Please refer the "Error pages" section of the FullAjaxExceptionHandler
javadoc for recommended error page
configuration.
Please refer the "Configuration" section of the FullAjaxExceptionHandler
javadoc for available context
parameters.
FacesExceptionFilter
If more fine grained control is desired for logging the exception, then the developer can opt to extend this
FacesExceptionFilter
and override one or more of the following protected methods:
FullAjaxExceptionHandler
,
HttpFilter
Constructor and Description |
---|
FacesExceptionFilter() |
Modifier and Type | Method and Description |
---|---|
void |
doFilter(HttpServletRequest request,
HttpServletResponse response,
HttpSession session,
FilterChain chain)
Filter the HTTP request.
|
void |
init()
Convenience init() method without FilterConfig parameter which will be called by init(FilterConfig).
|
protected void |
logException(HttpServletRequest request,
Throwable exception,
String location,
String message,
Object... parameters)
Log the thrown exception and determined error page location with the given message, optionally parameterized
with the given parameters.
|
destroy, doFilter, getFilterConfig, getInitParameter, getServletContext, init
public void init() throws ServletException
HttpFilter
init
in class HttpFilter
ServletException
- When filter's initialization failed.public void doFilter(HttpServletRequest request, HttpServletResponse response, HttpSession session, FilterChain chain) throws ServletException, IOException
HttpFilter
null
if there is no session.doFilter
in class HttpFilter
request
- The HTTP request.response
- The HTTP response.session
- The HTTP session, if any, else null
.chain
- The filter chain to continue.ServletException
- As wrapper exception when something fails in the request processing.IOException
- Whenever something fails at I/O level.Filter.doFilter(ServletRequest, ServletResponse, FilterChain)
protected void logException(HttpServletRequest request, Throwable exception, String location, String message, Object... parameters)
java.util.logging
as SEVERE when the thrown exception is
not an instance of any type specified in context parameter
"org.omnifaces.EXCEPTION_TYPES_TO_IGNORE_IN_LOGGING".
The log message will be prepended with the UUID and IP address.
The UUID is available in EL by #{requestScope['org.omnifaces.exception_uuid']}
.request
- The involved servlet request.exception
- The exception to log.location
- The error page location.message
- The log message.parameters
- The log message parameters, if any. They are formatted using Formatter
.Copyright © 2012–2020 OmniFaces. All rights reserved.