解決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