2015-06-20 134 views
0

有很多话题,但是......我有正确的返回参数和参数,我读过,这是必要的。哪里不对?弹簧错误处理不起作用

<servlet> 
    <servlet-name>springMvc</servlet-name> 
    <servlet-class>com.vse.uslugi.utilities.web.BaseDispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

import org.springframework.web.bind.annotation.ExceptionHandler; 
import org.springframework.web.bind.annotation.ResponseBody; 
import org.springframework.web.servlet.DispatcherServlet; 

public class BaseDispatcherServlet extends DispatcherServlet { 
@ResponseBody 
@ExceptionHandler(Exception.class) 
public String handleThrowable() { 
    return ErrorService.html("Internal server error"); 
} 

@ResponseBody 
@ExceptionHandler(ResourceNotFoundException.class) 
public String handleResourceNotFoundException() { 
    return ErrorService.html("Page not found"); 
} 
} 
//-------------------- 
import org.springframework.http.HttpStatus; 
import org.springframework.web.bind.annotation.ResponseStatus; 

@ResponseStatus(HttpStatus.NOT_FOUND) 
public class ResourceNotFoundException extends RuntimeException { 
} 

回答

0

调度程序servlet正在由您的应用程序服务器实例化,因此它可能不是由Spring管理的。

有些选项你有:

  1. 添加@ExceptionHandler方法来控制。
  2. 将bean添加到您的spring上下文中,该bean上有@ExceptionHandler方法,并用@ControllerAdvice注释该类,这将默认应用于所有控制器。