2016-10-26 10 views
0

У меня есть простой контроллер отдыха:Managment Ошибки в ControllerAdvice приводит к дублированию в URI и 404

@RestController 
@RequestMapping("/api/v1/") 
public class OrderController { 
    @RequestMapping(value = "/orders2", method = RequestMethod.POST) 
    public OrderDto createOrder2(@RequestBody OrderDto order) throws Exception { 
     throw new Exception("Bouh!"); 
    } 
} 

И я хочу, чтобы управлять исключениями в глобальном масштабе. Из того, что я прочитал это можно сделать что-то вроде:

@ControllerAdvice 
public class ErrorController { 

    @ExceptionHandler(Exception.class) 
    @ResponseStatus(value = HttpStatus.BAD_REQUEST) 
    public ErrorDto handleConflict(HttpServletRequest request, Exception e) throws Exception { 
     ErrorDto o = new ErrorDto(); 
     o.setMessage(e.getMessage()); 
     return o; 
    } 
} 

Но когда я делаю пост по моей просьбе, я получаю следующее сообщение об ошибке:

26/10/2016 17:26:08.187 [http-nio-8080-exec-12] WARN o.s.web.servlet.PageNotFound - 
No mapping found for HTTP request with URI [/duorest/api/v1/api/v1/orders2] 
in DispatcherServlet with name 'rest' 

Я не знаю, почему Ури перейти к/duorest/апи/v1/API/v1/orders2

Некоторые факты:

  • Я проверил в отладке, мой код выполняется
  • Если переместить метод в контроллере покоя, я не получаю сообщение об ошибке, и что я ожидаю (мой ErrorDto объект)
  • Spring Framework версии 4.3.3.RELEASE
  • Spring -data-rest-webmvc версия 2.5.4.RELEASE

У кого-нибудь уже была эта проблема? Или какой-нибудь намек?

ответ

0

Решено ли? если нет, попробуйте выполнить с @ResponseBody отсутствует в методе handleConflict.

+0

Я знал, что это было что-то незначительное, вот и все, отсутствует аннотация! – wishper

+0

Конечно, всегда что-то второстепенное мы пропускаем большую часть времени :). Хороший мой ответ помог вам –

 Смежные вопросы

  • Нет связанных вопросов^_^