|
|
|
|
@@ -1,5 +1,5 @@
|
|
|
|
|
/*
|
|
|
|
|
* Copyright 2002-2009 the original author or authors.
|
|
|
|
|
* Copyright 2002-2010 the original author or authors.
|
|
|
|
|
*
|
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
|
@@ -31,9 +31,9 @@ import org.springframework.http.converter.HttpMessageNotReadableException;
|
|
|
|
|
import org.springframework.http.converter.HttpMessageNotWritableException;
|
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
import org.springframework.web.HttpMediaTypeNotAcceptableException;
|
|
|
|
|
import org.springframework.web.HttpMediaTypeNotSupportedException;
|
|
|
|
|
import org.springframework.web.HttpRequestMethodNotSupportedException;
|
|
|
|
|
import org.springframework.web.HttpMediaTypeNotAcceptableException;
|
|
|
|
|
import org.springframework.web.bind.MissingServletRequestParameterException;
|
|
|
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
|
|
|
import org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver;
|
|
|
|
|
@@ -41,11 +41,13 @@ import org.springframework.web.servlet.mvc.multiaction.NoSuchRequestHandlingMeth
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Default implementation of the {@link org.springframework.web.servlet.HandlerExceptionResolver
|
|
|
|
|
* HandlerExceptionResolver} interface that resolves standard Spring exceptions. <p>Default implementations typically
|
|
|
|
|
* set the response status to a corresponding HTTP status code. <p>This exception resolver is enabled by default in the
|
|
|
|
|
* {@link org.springframework.web.servlet.DispatcherServlet}.
|
|
|
|
|
* HandlerExceptionResolver} interface that resolves standard Spring exceptions and translates
|
|
|
|
|
* them to corresponding HTTP status codes.
|
|
|
|
|
*
|
|
|
|
|
* <p>This exception resolver is enabled by default in the {@link org.springframework.web.servlet.DispatcherServlet}.
|
|
|
|
|
*
|
|
|
|
|
* @author Arjen Poutsma
|
|
|
|
|
* @since 3.0
|
|
|
|
|
* @see #handleNoSuchRequestHandlingMethod
|
|
|
|
|
* @see #handleHttpRequestMethodNotSupported
|
|
|
|
|
* @see #handleHttpMediaTypeNotSupported
|
|
|
|
|
@@ -53,34 +55,34 @@ import org.springframework.web.servlet.mvc.multiaction.NoSuchRequestHandlingMeth
|
|
|
|
|
* @see #handleTypeMismatch
|
|
|
|
|
* @see #handleHttpMessageNotReadable
|
|
|
|
|
* @see #handleHttpMessageNotWritable
|
|
|
|
|
* @since 3.0
|
|
|
|
|
*/
|
|
|
|
|
public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionResolver {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Log category to use when no mapped handler is found for a request.
|
|
|
|
|
*
|
|
|
|
|
* @see #pageNotFoundLogger
|
|
|
|
|
*/
|
|
|
|
|
public static final String PAGE_NOT_FOUND_LOG_CATEGORY = "org.springframework.web.servlet.PageNotFound";
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Additional logger to use when no mapped handler is found for a request.
|
|
|
|
|
*
|
|
|
|
|
* @see #PAGE_NOT_FOUND_LOG_CATEGORY
|
|
|
|
|
*/
|
|
|
|
|
protected static final Log pageNotFoundLogger = LogFactory.getLog(PAGE_NOT_FOUND_LOG_CATEGORY);
|
|
|
|
|
|
|
|
|
|
/** Sets the {@linkplain #setOrder(int) order} to {@link #LOWEST_PRECEDENCE}. */
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Sets the {@linkplain #setOrder(int) order} to {@link #LOWEST_PRECEDENCE}.
|
|
|
|
|
*/
|
|
|
|
|
public DefaultHandlerExceptionResolver() {
|
|
|
|
|
setOrder(Ordered.LOWEST_PRECEDENCE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected ModelAndView doResolveException(HttpServletRequest request,
|
|
|
|
|
HttpServletResponse response,
|
|
|
|
|
Object handler,
|
|
|
|
|
Exception ex) {
|
|
|
|
|
protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response,
|
|
|
|
|
Object handler, Exception ex) {
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
if (ex instanceof NoSuchRequestHandlingMethodException) {
|
|
|
|
|
return handleNoSuchRequestHandlingMethod((NoSuchRequestHandlingMethodException) ex, request, response,
|
|
|
|
|
@@ -122,22 +124,20 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Handle the case where no request handler method was found. <p>The default implementation logs a warning, sends an
|
|
|
|
|
* HTTP 404 error, and returns an empty {@code ModelAndView}. Alternatively, a fallback view could be chosen, or the
|
|
|
|
|
* NoSuchRequestHandlingMethodException could be rethrown as-is.
|
|
|
|
|
*
|
|
|
|
|
* Handle the case where no request handler method was found.
|
|
|
|
|
* <p>The default implementation logs a warning, sends an HTTP 404 error, and returns
|
|
|
|
|
* an empty {@code ModelAndView}. Alternatively, a fallback view could be chosen,
|
|
|
|
|
* or the NoSuchRequestHandlingMethodException could be rethrown as-is.
|
|
|
|
|
* @param ex the NoSuchRequestHandlingMethodException to be handled
|
|
|
|
|
* @param request current HTTP request
|
|
|
|
|
* @param response current HTTP response
|
|
|
|
|
* @param handler the executed handler, or <code>null</code> if none chosen at the time of the exception (for example,
|
|
|
|
|
* if multipart resolution failed)
|
|
|
|
|
* @param handler the executed handler, or <code>null</code> if none chosen
|
|
|
|
|
* at the time of the exception (for example, if multipart resolution failed)
|
|
|
|
|
* @return a ModelAndView to render, or <code>null</code> if handled directly
|
|
|
|
|
* @throws Exception an Exception that should be thrown as result of the servlet request
|
|
|
|
|
*/
|
|
|
|
|
protected ModelAndView handleNoSuchRequestHandlingMethod(NoSuchRequestHandlingMethodException ex,
|
|
|
|
|
HttpServletRequest request,
|
|
|
|
|
HttpServletResponse response,
|
|
|
|
|
Object handler) throws Exception {
|
|
|
|
|
HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
|
|
|
|
|
|
|
|
|
pageNotFoundLogger.warn(ex.getMessage());
|
|
|
|
|
response.sendError(HttpServletResponse.SC_NOT_FOUND);
|
|
|
|
|
@@ -145,23 +145,20 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Handle the case where no request handler method was found for the particular HTTP request method. <p>The default
|
|
|
|
|
* implementation logs a warning, sends an HTTP 405 error, sets the "Allow" header, and returns an empty {@code
|
|
|
|
|
* ModelAndView}. Alternatively, a fallback view could be chosen, or the HttpRequestMethodNotSupportedException could
|
|
|
|
|
* be rethrown as-is.
|
|
|
|
|
*
|
|
|
|
|
* Handle the case where no request handler method was found for the particular HTTP request method.
|
|
|
|
|
* <p>The default implementation logs a warning, sends an HTTP 405 error, sets the "Allow" header,
|
|
|
|
|
* and returns an empty {@code ModelAndView}. Alternatively, a fallback view could be chosen,
|
|
|
|
|
* or the HttpRequestMethodNotSupportedException could be rethrown as-is.
|
|
|
|
|
* @param ex the HttpRequestMethodNotSupportedException to be handled
|
|
|
|
|
* @param request current HTTP request
|
|
|
|
|
* @param response current HTTP response
|
|
|
|
|
* @param handler the executed handler, or <code>null</code> if none chosen at the time of the exception (for example,
|
|
|
|
|
* if multipart resolution failed)
|
|
|
|
|
* @param handler the executed handler, or <code>null</code> if none chosen
|
|
|
|
|
* at the time of the exception (for example, if multipart resolution failed)
|
|
|
|
|
* @return a ModelAndView to render, or <code>null</code> if handled directly
|
|
|
|
|
* @throws Exception an Exception that should be thrown as result of the servlet request
|
|
|
|
|
*/
|
|
|
|
|
protected ModelAndView handleHttpRequestMethodNotSupported(HttpRequestMethodNotSupportedException ex,
|
|
|
|
|
HttpServletRequest request,
|
|
|
|
|
HttpServletResponse response,
|
|
|
|
|
Object handler) throws Exception {
|
|
|
|
|
HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
|
|
|
|
|
|
|
|
|
pageNotFoundLogger.warn(ex.getMessage());
|
|
|
|
|
String[] supportedMethods = ex.getSupportedMethods();
|
|
|
|
|
@@ -174,22 +171,19 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Handle the case where no {@linkplain org.springframework.http.converter.HttpMessageConverter message converters}
|
|
|
|
|
* were found for the PUT or POSTed content. <p>The default implementation sends an HTTP 415 error, sets the "Accept"
|
|
|
|
|
* header, and returns an empty {@code ModelAndView}. Alternatively, a fallback view could be chosen, or the
|
|
|
|
|
* HttpMediaTypeNotSupportedException could be rethrown as-is.
|
|
|
|
|
*
|
|
|
|
|
* were found for the PUT or POSTed content. <p>The default implementation sends an HTTP 415 error,
|
|
|
|
|
* sets the "Accept" header, and returns an empty {@code ModelAndView}. Alternatively, a fallback
|
|
|
|
|
* view could be chosen, or the HttpMediaTypeNotSupportedException could be rethrown as-is.
|
|
|
|
|
* @param ex the HttpMediaTypeNotSupportedException to be handled
|
|
|
|
|
* @param request current HTTP request
|
|
|
|
|
* @param response current HTTP response
|
|
|
|
|
* @param handler the executed handler, or <code>null</code> if none chosen at the time of the exception (for example,
|
|
|
|
|
* if multipart resolution failed)
|
|
|
|
|
* @param handler the executed handler, or <code>null</code> if none chosen
|
|
|
|
|
* at the time of the exception (for example, if multipart resolution failed)
|
|
|
|
|
* @return a ModelAndView to render, or <code>null</code> if handled directly
|
|
|
|
|
* @throws Exception an Exception that should be thrown as result of the servlet request
|
|
|
|
|
*/
|
|
|
|
|
protected ModelAndView handleHttpMediaTypeNotSupported(HttpMediaTypeNotSupportedException ex,
|
|
|
|
|
HttpServletRequest request,
|
|
|
|
|
HttpServletResponse response,
|
|
|
|
|
Object handler) throws Exception {
|
|
|
|
|
HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
|
|
|
|
|
|
|
|
|
response.sendError(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE);
|
|
|
|
|
List<MediaType> mediaTypes = ex.getSupportedMediaTypes();
|
|
|
|
|
@@ -202,131 +196,119 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes
|
|
|
|
|
/**
|
|
|
|
|
* Handle the case where no {@linkplain org.springframework.http.converter.HttpMessageConverter message converters}
|
|
|
|
|
* were found that were acceptable for the client (expressed via the {@code Accept} header.
|
|
|
|
|
* <p>The default implementation sends an HTTP 406 error and returns an empty {@code ModelAndView}. Alternatively,
|
|
|
|
|
* a fallback view could be chosen, or the HttpMediaTypeNotAcceptableException could be rethrown as-is.
|
|
|
|
|
*
|
|
|
|
|
* <p>The default implementation sends an HTTP 406 error and returns an empty {@code ModelAndView}.
|
|
|
|
|
* Alternatively, a fallback view could be chosen, or the HttpMediaTypeNotAcceptableException
|
|
|
|
|
* could be rethrown as-is.
|
|
|
|
|
* @param ex the HttpMediaTypeNotAcceptableException to be handled
|
|
|
|
|
* @param request current HTTP request
|
|
|
|
|
* @param response current HTTP response
|
|
|
|
|
* @param handler the executed handler, or <code>null</code> if none chosen at the time of the exception (for example,
|
|
|
|
|
* if multipart resolution failed)
|
|
|
|
|
* @param handler the executed handler, or <code>null</code> if none chosen
|
|
|
|
|
* at the time of the exception (for example, if multipart resolution failed)
|
|
|
|
|
* @return a ModelAndView to render, or <code>null</code> if handled directly
|
|
|
|
|
* @throws Exception an Exception that should be thrown as result of the servlet request
|
|
|
|
|
*/
|
|
|
|
|
protected ModelAndView handleHttpMediaTypeNotAcceptable(HttpMediaTypeNotAcceptableException ex,
|
|
|
|
|
HttpServletRequest request,
|
|
|
|
|
HttpServletResponse response,
|
|
|
|
|
Object handler) throws Exception {
|
|
|
|
|
HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
|
|
|
|
|
|
|
|
|
response.sendError(HttpServletResponse.SC_NOT_ACCEPTABLE);
|
|
|
|
|
return new ModelAndView();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Handle the case when a required parameter is missing. <p>The default implementation sends an HTTP 400 error, and
|
|
|
|
|
* returns an empty {@code ModelAndView}. Alternatively, a fallback view could be chosen, or the
|
|
|
|
|
* MissingServletRequestParameterException could be rethrown as-is.
|
|
|
|
|
*
|
|
|
|
|
* Handle the case when a required parameter is missing.
|
|
|
|
|
* <p>The default implementation sends an HTTP 400 error, and returns an empty {@code ModelAndView}.
|
|
|
|
|
* Alternatively, a fallback view could be chosen, or the MissingServletRequestParameterException
|
|
|
|
|
* could be rethrown as-is.
|
|
|
|
|
* @param ex the MissingServletRequestParameterException to be handled
|
|
|
|
|
* @param request current HTTP request
|
|
|
|
|
* @param response current HTTP response
|
|
|
|
|
* @param handler the executed handler, or <code>null</code> if none chosen at the time of the exception (for example,
|
|
|
|
|
* if multipart resolution failed)
|
|
|
|
|
* @param handler the executed handler, or <code>null</code> if none chosen
|
|
|
|
|
* at the time of the exception (for example, if multipart resolution failed)
|
|
|
|
|
* @return a ModelAndView to render, or <code>null</code> if handled directly
|
|
|
|
|
* @throws Exception an Exception that should be thrown as result of the servlet request
|
|
|
|
|
*/
|
|
|
|
|
protected ModelAndView handleMissingServletRequestParameter(MissingServletRequestParameterException ex,
|
|
|
|
|
HttpServletRequest request,
|
|
|
|
|
HttpServletResponse response,
|
|
|
|
|
Object handler) throws Exception {
|
|
|
|
|
HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
|
|
|
|
|
|
|
|
|
response.sendError(HttpServletResponse.SC_BAD_REQUEST);
|
|
|
|
|
return new ModelAndView();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Handle the case when a {@link org.springframework.web.bind.WebDataBinder} conversion cannot occur. <p>The default
|
|
|
|
|
* implementation sends an HTTP 500 error, and returns an empty {@code ModelAndView}. Alternatively, a fallback view
|
|
|
|
|
* could be chosen, or the TypeMismatchException could be rethrown as-is.
|
|
|
|
|
*
|
|
|
|
|
* Handle the case when a {@link org.springframework.web.bind.WebDataBinder} conversion cannot occur.
|
|
|
|
|
* <p>The default implementation sends an HTTP 500 error, and returns an empty {@code ModelAndView}.
|
|
|
|
|
* Alternatively, a fallback view could be chosen, or the TypeMismatchException could be rethrown as-is.
|
|
|
|
|
* @param ex the ConversionNotSupportedException to be handled
|
|
|
|
|
* @param request current HTTP request
|
|
|
|
|
* @param response current HTTP response
|
|
|
|
|
* @param handler the executed handler, or <code>null</code> if none chosen at the time of the exception (for example,
|
|
|
|
|
* if multipart resolution failed)
|
|
|
|
|
* @param handler the executed handler, or <code>null</code> if none chosen
|
|
|
|
|
* at the time of the exception (for example, if multipart resolution failed)
|
|
|
|
|
* @return a ModelAndView to render, or <code>null</code> if handled directly
|
|
|
|
|
* @throws Exception an Exception that should be thrown as result of the servlet request
|
|
|
|
|
*/
|
|
|
|
|
protected ModelAndView handleConversionNotSupported(ConversionNotSupportedException ex,
|
|
|
|
|
HttpServletRequest request,
|
|
|
|
|
HttpServletResponse response,
|
|
|
|
|
Object handler) throws Exception {
|
|
|
|
|
HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
|
|
|
|
|
|
|
|
|
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
|
|
|
|
return new ModelAndView();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Handle the case when a {@link org.springframework.web.bind.WebDataBinder} conversion error occurs. <p>The default
|
|
|
|
|
* implementation sends an HTTP 400 error, and returns an empty {@code ModelAndView}. Alternatively, a fallback view
|
|
|
|
|
* could be chosen, or the TypeMismatchException could be rethrown as-is.
|
|
|
|
|
*
|
|
|
|
|
* Handle the case when a {@link org.springframework.web.bind.WebDataBinder} conversion error occurs.
|
|
|
|
|
* <p>The default implementation sends an HTTP 400 error, and returns an empty {@code ModelAndView}.
|
|
|
|
|
* Alternatively, a fallback view could be chosen, or the TypeMismatchException could be rethrown as-is.
|
|
|
|
|
* @param ex the TypeMismatchException to be handled
|
|
|
|
|
* @param request current HTTP request
|
|
|
|
|
* @param response current HTTP response
|
|
|
|
|
* @param handler the executed handler, or <code>null</code> if none chosen at the time of the exception (for example,
|
|
|
|
|
* if multipart resolution failed)
|
|
|
|
|
* @param handler the executed handler, or <code>null</code> if none chosen
|
|
|
|
|
* at the time of the exception (for example, if multipart resolution failed)
|
|
|
|
|
* @return a ModelAndView to render, or <code>null</code> if handled directly
|
|
|
|
|
* @throws Exception an Exception that should be thrown as result of the servlet request
|
|
|
|
|
*/
|
|
|
|
|
protected ModelAndView handleTypeMismatch(TypeMismatchException ex,
|
|
|
|
|
HttpServletRequest request,
|
|
|
|
|
HttpServletResponse response,
|
|
|
|
|
Object handler) throws Exception {
|
|
|
|
|
HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
|
|
|
|
|
|
|
|
|
response.sendError(HttpServletResponse.SC_BAD_REQUEST);
|
|
|
|
|
return new ModelAndView();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Handle the case where a {@linkplain org.springframework.http.converter.HttpMessageConverter message converter} can
|
|
|
|
|
* not read from a HTTP request. <p>The default implementation sends an HTTP 400 error, and returns an empty {@code
|
|
|
|
|
* ModelAndView}. Alternatively, a fallback view could be chosen, or the HttpMediaTypeNotSupportedException could be
|
|
|
|
|
* Handle the case where a {@linkplain org.springframework.http.converter.HttpMessageConverter message converter}
|
|
|
|
|
* cannot read from a HTTP request.
|
|
|
|
|
* <p>The default implementation sends an HTTP 400 error, and returns an empty {@code ModelAndView}.
|
|
|
|
|
* Alternatively, a fallback view could be chosen, or the HttpMediaTypeNotSupportedException could be
|
|
|
|
|
* rethrown as-is.
|
|
|
|
|
*
|
|
|
|
|
* @param ex the HttpMessageNotReadableException to be handled
|
|
|
|
|
* @param request current HTTP request
|
|
|
|
|
* @param response current HTTP response
|
|
|
|
|
* @param handler the executed handler, or <code>null</code> if none chosen at the time of the exception (for example,
|
|
|
|
|
* if multipart resolution failed)
|
|
|
|
|
* @param handler the executed handler, or <code>null</code> if none chosen
|
|
|
|
|
* at the time of the exception (for example, if multipart resolution failed)
|
|
|
|
|
* @return a ModelAndView to render, or <code>null</code> if handled directly
|
|
|
|
|
* @throws Exception an Exception that should be thrown as result of the servlet request
|
|
|
|
|
*/
|
|
|
|
|
protected ModelAndView handleHttpMessageNotReadable(HttpMessageNotReadableException ex,
|
|
|
|
|
HttpServletRequest request,
|
|
|
|
|
HttpServletResponse response,
|
|
|
|
|
Object handler) throws Exception {
|
|
|
|
|
HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
|
|
|
|
|
|
|
|
|
response.sendError(HttpServletResponse.SC_BAD_REQUEST);
|
|
|
|
|
return new ModelAndView();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Handle the case where a {@linkplain org.springframework.http.converter.HttpMessageConverter message converter} can
|
|
|
|
|
* not write to a HTTP request. <p>The default implementation sends an HTTP 500 error, and returns an empty {@code
|
|
|
|
|
* ModelAndView}. Alternatively, a fallback view could be chosen, or the HttpMediaTypeNotSupportedException could be
|
|
|
|
|
* Handle the case where a {@linkplain org.springframework.http.converter.HttpMessageConverter message converter}
|
|
|
|
|
* cannot write to a HTTP request.
|
|
|
|
|
* <p>The default implementation sends an HTTP 500 error, and returns an empty {@code ModelAndView}.
|
|
|
|
|
* Alternatively, a fallback view could be chosen, or the HttpMediaTypeNotSupportedException could be
|
|
|
|
|
* rethrown as-is.
|
|
|
|
|
*
|
|
|
|
|
* @param ex the HttpMessageNotWritableException to be handled
|
|
|
|
|
* @param request current HTTP request
|
|
|
|
|
* @param response current HTTP response
|
|
|
|
|
* @param handler the executed handler, or <code>null</code> if none chosen at the time of the exception (for example,
|
|
|
|
|
* if multipart resolution failed)
|
|
|
|
|
* @param handler the executed handler, or <code>null</code> if none chosen
|
|
|
|
|
* at the time of the exception (for example, if multipart resolution failed)
|
|
|
|
|
* @return a ModelAndView to render, or <code>null</code> if handled directly
|
|
|
|
|
* @throws Exception an Exception that should be thrown as result of the servlet request
|
|
|
|
|
*/
|
|
|
|
|
protected ModelAndView handleHttpMessageNotWritable(HttpMessageNotWritableException ex,
|
|
|
|
|
HttpServletRequest request,
|
|
|
|
|
HttpServletResponse response,
|
|
|
|
|
Object handler) throws Exception {
|
|
|
|
|
HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
|
|
|
|
|
|
|
|
|
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
|
|
|
|
return new ModelAndView();
|
|
|
|
|
|