发生任何异常时无法转发到错误页面

时间:2017-07-28 04:24:02

标签: javascript java angularjs spring

我正在研究springmvc和angular应用程序。当发生一些异常时,我需要转发到错误页面,但是下面的场景不是转发到错误页面而是重定向到页面但是页面是空白的,当检查浏览器控制台时,下面是提到的例外:< / p>

Failed to load resource: the server responded with a status of 404 () :8080/undefined

我想将其转发到错误页面,而不是返回页面并显示空白页面。 我的异常中有一个异常处理程序类,发生的任何异常都是调用处理程序类,它处理并转发到错误页面。

js code:

myApp.controller('myController', function ($rootScope, $scope, $sce, MyService, $window) {
    $scope.getData = function () {
         $scope.pdfName = {};
        $scope.html = '';
       MyService.getMyData($scope.id1).then(
            function (response) {
                $scope.myResponse = response;
                //check for error
                if ($scope.myResponse .error) {
                    $rootScope.showError(500, $scope.myResponse .error);
                } else {
                if(window.navigator.msSaveOrOpenBlob){
                    $scope.IEBrowser = true;
                    //logic here
                    } else {
                    $scope.IEBrowser = false;
                    //some logic here}
            }},

        function (errResponse) {
            alert("in error ds");
            $rootScope.showError(500, errResponse);
            $scope.pdfName = {};
         });
    }
    $scope.getMyData();
});

//异常处理程序类

@ControllerAdvice
public class MyExceptionControllerAdvice {

    @ExceptionHandler(Exception.class)
    public @ResponseBody  ErrorInfoBean exception(Exception e) {
        System.out.println("In ExceptionControllerAdvice!----  " +e.getMessage());
        ErrorInfoBean error = new ErrorInfoBean();
        error.setStatus(500);
        error.setError(e.getMessage());
        return error;
    }
}

当我的spring控制器发生任何异常时,它会触及上面的MyExceptionControllerAdvice类但不返回错误页面。 我尝试在上面的MyExceptionControllerAdvice中将500更改为404,但它没有用。

web.xml中: 我配置如下:

<error-page>
        <error-code>500</error-code>
        <location>/views/error.jsp</location>
    </error-page>
    <error-page>
        <exception-type>404</exception-type>
        <location>/views/error.jsp</location>
    </error-page>

2 个答案:

答案 0 :(得分:0)

由于找不到网页或网址错误,导致发生404错误。您正在使用弹簧控制器和休息服务,因此您需要使用控制器和方法的请求映射。你需要在课程和方法之前使用@RequestMapping注释。

@RequestMapping("/myExceptionClass")
public class

@RequestMapping(value = "/exceptio", method = RequestMethod.POST, produces = "application/json", consumes = "application/json")
public RestResponse save(){

}

所以url将是:localhost:8080 / projectname / myExceptionClass / exception

答案 1 :(得分:0)

可能是你可以使用http拦截器来处理它。

$httpProvider.interceptors.push(function($q, $cookies) {
      return {
        responseError: function(rejection) {
          if (rejection.status === 404) {
            window.location.href = '/PageNotFound';
          }
          return $q.reject(rejection);
        }
      };
    });