2013-08-24 11 views
14

Sto provando a creare un filtro di richiesta che verrà utilizzato solo se corrisponde a un modello della lettera e, quindi un numero. Tuttavia non riesco a farlo funzionare. Continuo a ricevere 400 errori ogni volta che provo qualcosa con regex.Regex in spring controller

Se utilizzo solo quanto segue, "funziona" ma acquisisce anche i mapping che non hanno numeri che non desidero.

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

Ho provato le seguenti combinazioni.

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

risposta

26

Secondo the documentation, è necessario usare qualcosa come {varName:regex}. C'è anche un esempio:

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

si dovrebbe usare:

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

Ho modificato la risposta per eliminare il riferimento alla "soluzione", in quanto tale affermazione appartiene in un commento, non in una risposta. Tuttavia, sarebbe bello se tu spiegassi nella tua risposta (modificala) cosa fa il codice fornito rispetto alla domanda. – trincot

Problemi correlati