ControllerAdvice中的错误管理导致URI和404中的重复

时间:2016-10-26 15:36:18

标签: spring-mvc spring-restcontroller spring-rest

我有一个简单的休息控制器:

@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'

我不知道为什么uri会改为/ duorest / api / v1 / api / v1 / orders2

一些事实:

  • 我在调试中检查过,我的代码已执行
  • 如果我在静止控制器中移动方法,我没有错误和我期望的(我的ErrorDto对象)
  • Spring框架版本4.3.3.RELEASE
  • Spring-data-rest-webmvc版本2.5.4.RELEASE

有人已经有过这个问题吗?或任何提示?

1 个答案:

答案 0 :(得分:0)

它解决了吗?如果没有,请尝试执行@ResponseBody方法中缺少handleConflict