2013-03-12 47 views
6

コンテキストの後に任意の文字列を処理するリクエストマッピングがあります。Springの@RequestMappingからURLマッピングを除外する方法は?

@RequestMapping(value="/{str}", method = RequestMethod.GET) 
public String getApp(@PathVariable("str") String anyString, ModelMap model) { 
     //Do something 
    } 

問題は、私は次のようにURLがある私のアプリで2-3のURLましたです:WWWを次のように私はそれを処理してい

をwww.example.com/anystring .example.comと/ www.example.com/contact、についてなど、次のように私は彼らのために要求のマッピングを書いた

@RequestMapping("/about") 
    public String getAboutPage() { 
     return "about"; 
    } 

しかし明らかに、私は既に任意の文字列をgetApp()で処理する必要があると宣言しているので、getAboutPage()は決して実行されません。 getApp()マッピングから​​,/contactなどを除外するにはどうすればよいですか。 明らかにURL文字列に別のキーワードを追加することはできますが、これはアプリのユースケースでは不可能です。 助けてください。 :(

EDIT:

は、私はちょうど​​を処理する必要があり、同様getApp()内部/contact

@RequestMapping(value="/{str}", method = RequestMethod.GET) 
    public String getApp(@PathVariable("str") String anyString, ModelMap model) { 

    if(anyString.equals("about")){ 
    //do about related stuff 
    } 

    if(anyString.equals("contact")){ 
    //do contact related stuff 
    } 

    //Do something 
    } 

がより良い方法はあり

+0

読みやすくするために@Sazzadurを編集していただきありがとうございます。 – LittleLebowski

答えて

3

」でHTTPリクエストメソッドを指定します? catch-all "マッピングはおそらくパスマッチャーが絶対パスマッピングよりも具体的であると考えさせるでしょう。

絶対パスで要求メソッドを指定すると、マッピングコンパレータはパス変数を含む前に絶対一致を順序付ける必要があります。

例えば、

@RequestMapping("/about", method = RequestMethod.GET) 

また、あなたはキャッチオールのメソッド仕様削除できます

@RequestMapping("/{str}") 

をそれはあなたのURL構造の際に、それらのパスのいずれかが異なるHTTPリクエストメソッドを受け入れるかどうかを完全に依存しています。

+0

Bang on!指定されたメソッドと今すぐ動作します!どうもありがとう。 – LittleLebowski

関連する問題