解决SpringMvc进入两次Controller,自动重定向一次的问题


可能标题不是很准确,但是遇到的这个问题确实比较坑。下面来描述一下项目场景:

今天在开发的过程中遇到了两次这种问题:

我的控制层是:

@RestController @RequestMapping("/front/task") public class TaskController {

访问其中的一个接口:

    @RequestMapping("/taskAction") public RestResult doTaskAction(@Valid @RequestBody TaskDao taskDao){ RestResult result = new RestResult(); //todo
        return result; }

其中有个传参校验,当传参检验不通过的时候,直接报404:

No mapping found for HTTP request with URI [/front/task/front/task/taskAction] in DispatcherServlet with name 'spring'

很奇怪,springmc多转发了一次。

再检查过springmvc的若干配置,经历了一番周折之后,终于发现了问题所在:

@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) @ResponseStatus(HttpStatus.OK) public RestResult handlerException(HttpServletRequest request, Exception e){ RestResult result = new RestResult(); result.fail(e.getMessage()); System.out.println(e.getMessage()); return result; } }

全局异常捕捉类返回的时候没有指定@ResponseBody,springmvc解析不出来RestResult,只好在路径的后面又加上了“/fornt/task”。

正确的写法如下:

@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) @ResponseBody @ResponseStatus(HttpStatus.OK) public RestResult handlerException(HttpServletRequest request, Exception e){ RestResult result = new RestResult(); result.fail(e.getMessage()); System.out.println(e.getMessage()); return result; } }

重启项目,即可解决问题。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM