2017-07-28 15 views
0

私はspringmvcと角張ったアプリケーションに取り組んでいます。これまで何らかの例外が発生した場合は、エラーページに転送する必要がありますが、以下のシナリオではページにリダイレクトする代わりにエラーページに転送されませんが、ページが空白になり、ブラウザコンソールにチェックされている場合は例外です:例外が発生したときにエラーページに転送することができません

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

ページに戻って空白ページを表示する代わりに、エラーページに転送します。 私の例外に例外ハンドラクラスがあります。ハンドラクラスが呼び出され、エラーページを処理して転送する例外が発生します。

JSコード:

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; 
    } 
} 

私の春のコントローラから任意の例外が、それは上記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> 

答えて

0

404エラーが原因でページが見つかりませんか悪いのURL起こります。あなたはスプリングコントローラとレストサービスを使用しているので、コントローラとメソッドのリクエストマッピングを使用する必要はありません。クラスとメソッドの前に@RequestMapping注釈を使用する必要があります。

@RequestMapping("/myExceptionClass") 
public class 

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

} 

ので、URLは次のようになります。ローカルホスト:8080 /プロジェクト名/ myExceptionClass /例外

+0

はい、ここで私の質問は異なるものです。 404を処理する必要がある場合は、コンソールにエラーを表示し、空白のページを表示する代わりに、エラーページにリダイレクトする方法を教えてください。 – DIM

0

はあなたがHTTPのインターセプターを使用して、それを扱うことができるように。

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

(コントローラまたはサービスコールで)インターセプタコードをどこに含める必要がありますか – DIM

+1

このリンクhttp://を参照してください。 /www.webdeveasy.com/interceptors-in-angularjs-and-useful-examples/ – Krish

関連する問題