- All Implemented Interfaces:
Filter
The FacesExceptionFilter will solve 2 problems with exceptions thrown in Faces methods.
- Mojarra's
FacesFileNotFoundExceptionneeds to be interpreted as 404. - Root cause needs to be unwrapped from
FacesExceptionandELExceptionto 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']}.
Installation
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>
Note that since OmniFaces 4.5, the FullAjaxExceptionHandler will automatically register the
FacesExceptionFilter on its default URL pattern of /* when it is absent in web.xml, so you
do not need to explicitly register it then.
Error pages
Please refer the "Error pages" section of the FullAjaxExceptionHandler javadoc for recommended error page
configuration.
Configuration
Please refer the "Configuration" section of the FullAjaxExceptionHandler javadoc for available context
parameters.
Customizing 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:
- Author:
- Bauke Scholtz
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoiddoFilter(HttpServletRequest request, HttpServletResponse response, HttpSession session, FilterChain chain) Filter the HTTP request.voidinit()Convenience init() method without FilterConfig parameter which will be called by init(FilterConfig).protected voidlogException(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.Methods inherited from class org.omnifaces.filter.HttpFilter
destroy, doFilter, getFilterConfig, getInitParameter, getServletContext, init
-
Constructor Details
-
FacesExceptionFilter
public FacesExceptionFilter()
-
-
Method Details
-
init
Description copied from class:HttpFilterConvenience init() method without FilterConfig parameter which will be called by init(FilterConfig).- Overrides:
initin classHttpFilter- Throws:
ServletException- When filter's initialization failed.
-
doFilter
public void doFilter(HttpServletRequest request, HttpServletResponse response, HttpSession session, FilterChain chain) throws ServletException, IOException Description copied from class:HttpFilterFilter the HTTP request. The session argument isnullif there is no session.- Specified by:
doFilterin classHttpFilter- Parameters:
request- The HTTP request.response- The HTTP response.session- The HTTP session, if any, elsenull.chain- The filter chain to continue.- Throws:
ServletException- As wrapper exception when something fails in the request processing.IOException- Whenever something fails at I/O level.- See Also:
-
logException
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. The default implementation logs throughjava.util.loggingas 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']}.- Parameters:
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 usingFormatter.- Since:
- 3.2
-