2013-08-24 7 views
14

Ich versuche, einen Anforderungsfilter zu erstellen, der nur verwendet wird, wenn es mit einem Muster des Buchstaben e übereinstimmt, dann eine Zahl. Aber ich kann es nicht zur Arbeit bringen. Ich bekomme immer 400 Fehler, wenn ich etwas mit Regex versuche.Regex in Spring Controller

Wenn ich nur das folgende "funktioniert", aber auch erfasst, Mappings, die keine Zahlen haben, die ich nicht will.

@RequestMapping(value = "e{number}", 
      method = RequestMethod.GET) 

Ich habe die folgenden Kombinationen ausprobiert.

@RequestMapping(value = "e{number}", 
      params = "number:\\d+", 
      method = RequestMethod.GET) 

@RequestMapping(value = "e{number:\d+}", 
      method = RequestMethod.GET) 

@RequestMapping(value = "/e{^\\+?\\d+\$}", 
      method = RequestMethod.GET) 

@RequestMapping(value = "/{^\\e+?\\d+\$}", 
      method = RequestMethod.GET) 

Antwort

26

Nach the documentation, haben Sie so etwas wie {varName:regex} zu verwenden. Es gibt sogar ein Beispiel:

@RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:\\d\\.\\d\\.\\d}{extension:\\.[a-z]+}") 
    public void handle(@PathVariable String version, @PathVariable String extension) { 
    // ... 
    } 
} 
1

Sie verwenden sollten:

@RequestMapping("/e{number:\\d+}) 
+2

Ich bearbeitete die Antwort der Verweis auf die „Lösung“ zu entfernen, da eine solche Aussage in einem Kommentar gehört, nicht in einer Antwort. Es wäre jedoch gut, wenn Sie in Ihrer Antwort erklären (bearbeiten), was der angegebene Code in Bezug auf die Frage tut. – trincot

Verwandte Themen