public class DefaultErrorWebExceptionHandler extends AbstractErrorWebExceptionHandler
WebExceptionHandler
, rendering
ErrorAttributes
.
More specific errors can be handled either using Spring WebFlux abstractions (e.g.
@ExceptionHandler
with the annotation model) or by adding
RouterFunction
to the chain.
This implementation will render error as HTML views if the client explicitly supports
that media type. It attempts to resolve error views using well known conventions. Will
search for templates and static assets under '/error'
using the
status code
and the status series
.
For example, an HTTP 404
will search (in the specific order):
'/<templates>/error/404.<ext>'
'/<static>/error/404.html'
'/<templates>/error/4xx.<ext>'
'/<static>/error/4xx.html'
'/<templates>/error/error'
'/<static>/error/error.html'
If none found, a default "Whitelabel Error" HTML view will be rendered.
If the client doesn't support HTML, the error information will be rendered as a JSON payload.
Constructor and Description |
---|
DefaultErrorWebExceptionHandler(ErrorAttributes errorAttributes,
WebProperties.Resources resources,
ErrorProperties errorProperties,
ApplicationContext applicationContext)
Create a new
DefaultErrorWebExceptionHandler instance. |
Modifier and Type | Method and Description |
---|---|
protected RequestPredicate |
acceptsTextHtml()
Predicate that checks whether the current request explicitly support
"text/html" media type. |
protected ErrorAttributeOptions |
getErrorAttributeOptions(ServerRequest request,
MediaType mediaType) |
protected int |
getHttpStatus(Map<String,Object> errorAttributes)
Get the HTTP error status information from the error map.
|
protected RouterFunction<ServerResponse> |
getRoutingFunction(ErrorAttributes errorAttributes)
Create a
RouterFunction that can route and handle errors as JSON responses
or HTML views. |
protected boolean |
isIncludeBindingErrors(ServerRequest request,
MediaType produces)
Determine if the errors attribute should be included.
|
protected boolean |
isIncludeMessage(ServerRequest request,
MediaType produces)
Determine if the message attribute should be included.
|
protected boolean |
isIncludeStackTrace(ServerRequest request,
MediaType produces)
Determine if the stacktrace attribute should be included.
|
protected reactor.core.publisher.Mono<ServerResponse> |
renderErrorResponse(ServerRequest request)
Render the error information as a JSON payload.
|
protected reactor.core.publisher.Mono<ServerResponse> |
renderErrorView(ServerRequest request)
Render the error information as an HTML view.
|
afterPropertiesSet, getError, getErrorAttributes, getErrorAttributes, handle, isBindingErrorsEnabled, isMessageEnabled, isTraceEnabled, logError, renderDefaultErrorView, renderErrorView, setMessageReaders, setMessageWriters, setViewResolvers
public DefaultErrorWebExceptionHandler(ErrorAttributes errorAttributes, WebProperties.Resources resources, ErrorProperties errorProperties, ApplicationContext applicationContext)
DefaultErrorWebExceptionHandler
instance.errorAttributes
- the error attributesresources
- the resources configuration propertieserrorProperties
- the error configuration propertiesapplicationContext
- the current application contextprotected RouterFunction<ServerResponse> getRoutingFunction(ErrorAttributes errorAttributes)
AbstractErrorWebExceptionHandler
RouterFunction
that can route and handle errors as JSON responses
or HTML views.
If the returned RouterFunction
doesn't route to a HandlerFunction
,
the original exception is propagated in the pipeline and can be processed by other
WebExceptionHandler
s.
getRoutingFunction
in class AbstractErrorWebExceptionHandler
errorAttributes
- the ErrorAttributes
instance to use to extract error
informationRouterFunction
that routes and handles errorsprotected reactor.core.publisher.Mono<ServerResponse> renderErrorView(ServerRequest request)
request
- the current requestPublisher
of the HTTP responseprotected reactor.core.publisher.Mono<ServerResponse> renderErrorResponse(ServerRequest request)
request
- the current requestPublisher
of the HTTP responseprotected ErrorAttributeOptions getErrorAttributeOptions(ServerRequest request, MediaType mediaType)
protected boolean isIncludeStackTrace(ServerRequest request, MediaType produces)
request
- the source requestproduces
- the media type produced (or MediaType.ALL
)protected boolean isIncludeMessage(ServerRequest request, MediaType produces)
request
- the source requestproduces
- the media type produced (or MediaType.ALL
)protected boolean isIncludeBindingErrors(ServerRequest request, MediaType produces)
request
- the source requestproduces
- the media type produced (or MediaType.ALL
)protected int getHttpStatus(Map<String,Object> errorAttributes)
errorAttributes
- the current error informationprotected RequestPredicate acceptsTextHtml()
"text/html"
media type.
The "match-all" media type is not considered here.