我有在常规REST旁边使用swagger
和websocket
的应用程序。 Swagger具有默认终结点/api/swagger-ui.html
,而websocket具有默认终结点/api/websocket
。
我想实现将内部错误重定向到页面的自定义控制器。原来我是这样的
@Controller("/error")
public class ErrorPageController implements ErrorController {
....
@GetMapping
public String handleGetError(HttpServletRequest request) {
return handleError(request);
}
....
但是,当我使用swagger和websocket端点时,它导致了重定向。当我更改
@Controller
@RequestMapping("/error")
public class ErrorPageController
它开始正常工作。为什么会这样?
答案 0 :(得分:1)
Well Controller是spring中的专用组件,您传递的值被视为组件名称,而不是该控制器需要处理的路径。
答案 1 :(得分:1)
我认为问题出在@Controller("/error")
根据Spring Docs:
@Controller
注释用作@Component的特化,允许 通过类路径扫描自动检测的实现类。 它通常与带注释的处理程序方法结合使用 基于RequestMapping注释。
您可以传递的可选元素:
@Controller(String value)
该值可能表明建议使用逻辑组件名称,以 如果有自动检测到的组件,则将其转换为Spring bean。
可以得出结论,@Controller("/error")
中的 /错误只是组件名称,而不是路径。
答案 2 :(得分:0)
您应该添加@RequestMapping来定义路径
@RequestMapping("error")