2012-03-08 6 views
0
@Controller 
public class CentralizedExceptionController extends DefaultHandlerExceptionResolver { 

    @Override 
    protected ModelAndView handleNoSuchRequestHandlingMethod(NoSuchRequestHandlingMethodException ex, HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 
     System.out.println("working?!"); 
     return new ModelAndView(); 
    } 

私のコードではこれがありますが、404の場合は決して呼び出されません。 (私は私のweb.xmlに定義されたエラー・ページを持っていけない、と私はいけない)handleNoSuchRequestHandlingMethodは無効になります。

答えて

-1

あなたはあなたの方法に@ExceptionHandlerアノテーションを使用する必要があります。

@ExceptionHandler(NoSuchRequestHandlingMethodException.class) 
public ModelAndView handleNoSuchRequestHandlingMethod(NoSuchRequestHandlingMethodException ex, HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 
    ... 
} 
+0

これは機能しません。これは、404が作成された同じクラスにこのメソッドを配置した場合にのみ機能します。 –

0
+0

"HttpRequestHandlerを実装し、それをSimpleUrlHandlerMappingで"/** "にマッピングし、SimpleUrlHandlerMappingのorderプロパティをIntegerに設定するなど、ハンドラを作成し、すべての着信要求にマップし、最後の行として並べ替えることができます。 MAX_VALUE(デフォルト)。これは、本質的に未処理のリクエストのすべてのキャッチとして役立ちます。あなたは私にこの事例を教えてもらえますか? Thx –

+0

申し訳ありませんが、私は今テストすることはできませんが、これがあなたに手がかりを与えることを願っています:http://www.mkyong.com/spring-mvc/spring-mvc-simpleurlhandlermapping-example/ – Dani

0

あなたの春のディスパッチャサーブレットは、すべての/ほとんどのURLを処理するように構成されている場合、あなたはおそらくコンソールからこのDispatcherServletのログメッセージと一緒に404エラーを取得しています

No mapping found for HTTP request with URI [xxx] 

これは、SpringのDispatcherServletがリクエストを処理していますが、ディスパッチ先の@RequestMappingが適切ではないことを示しています。

単純な解決策は、web.xmlのservlet-mapping > url-patternをアプリケーションの@RequestMappingsで指定されたURLに再構成することによって、ディスパッチャーサーブレットによって処理される要求を制限することです。しかし、これはあまり実用的ではありません(そうしないでください)。

これを克服する1つの方法は、すべての「処理されていない」要求マッピング(何らかのフォールバック要求マッピング)を処理する@RequestMappingを作成することです。

@RequestMapping("**") 
@ResponseBody 
public String fallbackRequestMapping() { 
    return "do something useful..."; 
} 

この回答は、Daniの回答と同様ですが、アノテーションベースの開発を念頭に置いて書かれています。したがって、関連するSpring issueを理解すると便利です。

0

plz check。コントローラのクラス名はで、Controller.javaでなければなりません。

関連する問題