無論何時用戶在瀏覽器中輸入錯誤的url,它將導致NoSuchRequestHandlingMethodException
我想返回一個自定義視圖,而不是Spring提供消息的默認視圖。我有@AdviceController
其中我試圖通過@ExceptionHAndler(NoSuchRequestHandlingMethodException.class)
趕上它,並返回一個視圖,但它沒有奏效。我也繼承了DefaultHandlerExceptionResolver
,並且提出了處理NoSuchRequestHandlingMethodException
的方法,這也沒有奏效。我也嘗試通過擴展SimpleMappingExceptionResolver
setExecptionMapping
(在相同的@AdviceController
類中)方法註冊視圖名稱以避免異常。我不知道我做錯了什麼。我什至對春天拋出NoSuchRequestHandlingMethodException
當它沒有在控制器中找到任何映射有人可以告訴我如何返回與HTTP錯誤代碼相匹配的Spring異常的自定義視圖。在Spring MVC中返回NoSuchRequestHandlingMethodException的404錯誤的自定義視圖
這是我@ControllerAdvice
@ControllerAdvice
public class ExceptionHandlerController extends
DefaultHandlerExceptionResolver {
@ExceptionHandler(NoSuchRequestHandlingMethodException.class)
public String handleException(NoSuchRequestHandlingMethodException.class, Model model) {
String error = th.getMessage();
model.addAttribute("error", error);
model.addAttribute(new User());
return "login";
}
@override
protected ModelAndView handleNoSuchRequestHandlingMethodException
(NoSuchRequestHandlingMethodException ex, HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
ModelAndView mav = new ModelAndView("notfound");
return mav;
}
}
UPDATE:解決方案
是NoSuchRequestHandlingMethodException
沒有引起人們的關注,是因爲調度Servlet的委託請求默認的servlet處理程序(在我的情況DefaultServletHttpRequestHandler
)和認爲它處理。我已經實現的解決方法是,我創建了一個映射'/ *'的處理程序方法,當沒有在任何控制器中找到特定的映射並且我通過新的NoSuchRequestHandlingMethodException
可以在@ExceptionHandler中捕獲,然後返回自定義視圖。但是,我不知道處理這種異常的缺點。如果有的話讓我知道。
@Controller
public class HomeController {
...
@RequestMapping(value = "/*", method = RequestMethod.GET)
public void handleAtLast(HttpServletRequest request) throws NoSuchRequestHandlingMethodException {
throw new NoSuchRequestHandlingMethodException(request);
}
}
ExceptionHandlerController.java
@ControllerAdvice
public class ExceptionHandlerController extends DefaultHandlerExceptionResolver {
@ExceptionHandler(NoSuchRequestHandlingMethodException.class)
public String handleNoSuchMethodtFoundException(NoSuchRequestHandlingMethodException ex){
return "error/notfound";
}
}
這也許[文章將幫助你(http://www.javabeat.net/spring-mvc-404-error-page/) – rapasoft
這是一個當用戶在URI中輸入任何內容(其中需要名稱)時拋出自定義異常。我想返回在瀏覽器中輸入的每個錯誤url的視圖,導致NoSuchRequestHandlingMethodException。 –
NoSuchRequestHandlingMethodException被@Deprecated – BigDong