2013-11-14 15 views
6

Posso mettere/** jolly in un centro di richiesta di mappatura come ad esempio: "/ some/risorsa/**/quacosa"Primavera eccezioni richiesta mappatura jolly

a Spring 3 mi può fare questo

@RequestMapping("/some/resource/**") 

a map

/some/resource/A -> ControllerMethod1 
/some/resource/A/B -> ControllerMethod1 
/some/resource/A/B/C/D/E/F -> ControllerMethod1 

per qualsiasi numero di percorsi parti

Tuttavia questa mappatura è troppo avido e wil l mi permette di mappare un'URL sub @RequestMapping("/some/resource/**/somthing") a un altro controller come

/some/resource/A/somthing -> ControllerMethod2 
/some/resource/A/B/somthing -> ControllerMethod2 
/some/resource/A/B/C/D/E/F/somthing -> ControllerMethod2 

Come posso fare questo?

risposta

7

Penso che non sia possibile usare quello stile di form in url mapping come richiesto, perché si fermerà sul carattere del separatore del percorso successivo '/'.

Ti suggerisco di provare 16.3.2.2. URI Template Patterns with Regular Expressions per mappare solo l'ultima parte della richiesta (non ho ancora provato questo approccio).

Inoltre è possibile abbinare il resto della richiesta utilizzando PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE e applicare un'espressione lì. Check this post.

In caso contrario, è necessario utilizzare i parametri di richiesta per soddisfare tale condizione 16.3.2.6. Request Parameters and Header Values.

È possibile limitare la corrispondenza delle richieste mediante condizioni dei parametri di richiesta quali "myParam", "! MyParam" o "myParam = myValue". I primi due test per la presenza/assenza del parametro di richiesta e il terzo per un valore di parametro specifico. Ecco un esempio con una condizione del valore del parametro di richiesta.

In questo caso sarà mappare qualcosa di simile utilizzando params

@RequestMapping(value = {"/some/resource/**"}, params="somthing") 

o utilizzare il parametro di richiesta di annotazione con attributo non richiesto nel metodo di firma:

public void test(@RequestParam(value = "somthing", required=false) String str) { 
Problemi correlati