Я написал несколько расширений ExceptionHandlerExceptionResolver, он перехватывает все исключения, которые должен, но вместо того, чтобы возвращать только сообщение об ошибке и код состояния HTTP, он делает странное перенаправление своим собственным URL-адресом, созданным на основе запрошенного пользователями URL-адреса. Например:
user's url -> .../myModule/api/myEntity/123 (it's an id)
resolver's redirect url -> .../myModule/api/myEntity/myEntity/123
Сервер не имеет такого ресурса и, очевидно, он ответит 404.
Вопрос в том, почему он выполняет перенаправление и как его настроить, чтобы он возвращал только сообщение и код состояния?
Мой распознаватель:
public class BusinessLayerExceptionHandler extends ExceptionHandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
ModelAndView wrappedResponse = new ModelAndView();
wrappedResponse.addObject("errorMessage", ex.getMessage());
wrappedResponse.setStatus(HttpStatus.BAD_REQUEST);
return wrappedResponse;
}
}
Я предполагаю, что использование ModelAndView
предполагает перенаправление. По крайней мере, это описание метода, которое я нашел в DispatcherServlet.
...
* @return a corresponding ModelAndView to forward to
* @throws Exception if no error ModelAndView found
*/
protected ModelAndView processHandlerException(HttpServletRequest request, HttpServletResponse response,
Object handler, Exception ex) throws Exception {
...
Если так, как заставить его вернуть только сообщение об ошибке и код состояния HTTP?