2013-03-12 1 views
6

Ich habe eine Anforderungszuordnung, die eine beliebige Zeichenfolge nach dem Kontext behandelt, z. www.example.com/anystringWie URL-Mappings von @RequestMapping im Frühjahr auszuschließen?

Ich Umgang es wie folgt:

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

Das Problem ist, ich 2-3 URLs in meiner app haben, wo die URL wie folgt: www .example.com/über, www.example.com/contact usw.

ich schrieb für sie anfordern Mappings wie folgt:

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

Aber offensichtlich, da ich bereits erklärt habe, dass jede Zeichenfolge von der getApp() behandelt werden sollte, wird die getAboutPage() nie ausgeführt. Wie kann ich /about, /contact usw. von getApp() Mapping ausschließen. Wir können der URL-Zeichenfolge natürlich ein anderes Keyword hinzufügen, aber das ist in meinem App-Anwendungsfall nicht möglich. Bitte helfen. :(

EDIT:

Sollte ich behandeln nur /about, /contact innen getApp() wie:

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

Gibt es eine bessere Art und Weise

+0

Dank @Sazzadur für die Bearbeitung für eine bessere Lesbarkeit. – LittleLebowski

Antwort

3

Angeben des HTTP-Request-Methode in der " catch-all "Mapping" führt dazu, dass der Pfadanpasser es für spezifischer hält als die absoluten Pfadzuordnungen.

Geben Sie die Anforderungsmethode für die absoluten Pfade an, und der Zuordnungskomparator sollte die absoluten Übereinstimmungen vor denen mit der Pfadvariablen anordnen.

z.

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

Alternativ können Sie die Methode Spezifikation auf der catch-all entfernen:

@RequestMapping("/{str}") 

Es ist völlig abhängig von Ihrer URL-Struktur und ob eine dieser Wege werden verschiedene HTTP-Request-Methoden akzeptieren .

+0

Bang auf! Angegeben die Methode und es funktioniert jetzt! Danke vielmals. – LittleLebowski