7

www.example.com/anystringなど、コンテキストの後に任意の文字列を処理するリクエスト マッピングがあります。

以下のように扱っています。

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

問題は、URL がwww.example.com/aboutwww.example.com/contactなどであるアプリに 2 ~ 3 個の URL があることです。

次のようにリクエスト マッピングを作成しました。

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

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

編集:

内部のよう/aboutに処理する必要があります:/contactgetApp()

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

より良い方法はありますか?

4

1 に答える 1

3

「キャッチオール」マッピングで HTTP リクエスト メソッドを指定すると、パス マッチャーが絶対パス マッピングよりも具体的であると見なされる可能性があります。

絶対パスでリクエスト メソッドを指定すると、マッピング コンパレータはパス変数を含むものの前に絶対一致を並べ替える必要があります。

例えば。

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

または、キャッチオールのメソッド仕様を削除することもできます。

@RequestMapping("/{str}")

URL 構造と、それらのパスのいずれかが異なる http 要求メソッドを受け入れるかどうかに完全に依存します。

于 2013-03-12T16:01:42.063 に答える