2012-01-25 17 views
8

リクエストマッピングを持つコントローラがあります@RequestMapping("/**") これはどういう意味ですか?Spring MVCの@RequestMappingアノテーション

上記のマッピングから特定のURLパターンを除外したいのですが、どうすればいいですか?

誰かに光を当ててもらえますか?

+0

また、@RequestMappingでURLパターンがどのように機能するかを教えてください。ありがとう。 –

答えて

7

あなたのURLは、 '/ **'と一致するすべてのリクエストを傍受します。これを定義している場所によっては、なぜこれをやりたいのか分かりません。クラスレベルでは、ベースパスを定義する必要がありますが、メソッドレベルでは特定の関数に洗練される必要があります。

あなたはここに/ ** '

を指定して、コントローラに高い優先順位で注文された別のコントローラを定義することができ、パターンを除外したい場合は、春のソースから2つの良いリファレンスです:

  1. http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html

  2. http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html

+1

/**と/ *の違いは何ですか?私は/ *もカバーすると思う/ ** 私は正しいですか? –

+1

それは逆です。 Googleの "ant style pattern"またはこれに類するもの... –

14

Regexの "否定先読み"構造の使用により、 "url exclusion"または "url matching not"を達成することができました。

静的リソース以外のもの(CSS/Images/JSなど)とエラーページをハンドラでハンドリングします。

エラーページのhandelingを防止するためには、あなたが/ /エラーとエラーのURLの接頭辞

  • 編集

    1. 編集web.xmlファイル/ウェブアプリへ/エラー・ページが必要になりますresourceNotFound、すなわちWEB-INF/spring/webmvc-config.xml/beans/mvc:view-controller/@ path新しいマッピングをハンドリングします。
    2. WEB-INF/spring/webmvc-config.xml/beans/bean [@ class = ** SimpleMappingExceptionResolver]を使用して、すべての例外をエラーにマップします。

    あなたのコントローラでは以下を使用してください

    @Controller 
    @RequestMapping(value = { "/" }) 
    public class CmsFrontendController { 
    
        @RequestMapping(value = { "/" }, headers = "Accept=text/html") 
        public String index(Model ui) { 
         return addMenu(ui, "/"); 
        } 
    
        @RequestMapping(value = { "{path:(?!resources|error).*$}", "{path:(?!resources|error).*$}/**" }, headers = "Accept=text/html") 
        public String index(Model ui, @PathVariable(value = "path")String path) { 
         try { 
          path = (String) request.getAttribute(
            HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE); 
          return addMenu(ui, path); 
         } catch (Exception e) { 
          log.error("Failed to render the page. {}", StackTraceUtil.getStackTrace(e)); 
          return "error/general"; 
         } 
        } 
    } 
    
  • +1

    これよりも保守的な解決策が必要ですか?おとこ。 – roufamatic

    +0

    すごく、ありがとう@コンセプト! – Gilead

    +0

    多くのおかげで@コープ! –

    関連する問題