2010-02-24 15 views
8

Sto lavorando a un progetto Spring MVC utilizzando Controller annotato. Una cosa a cui sono interessato riguarda l'ordine con cui si deve elaborare l'istruzione @RequestMapping. Ad esempio, voglio che tutti gli /green/basic/welcome siano mappati su GreenController.welcome() ma che green/{treeId}/{treeName} sia mappato su GreenController.viewTree(treeId, treeName).Richiesto RequestMapping in primavera MVC

Credo che ho bisogno di specificare due @RequestMapping con @RequestMapping di /green/basic/welcome da elaborare prima, in modo che non sarà interprete come una chiamata a GreenControllerviewTree("basic", "welcome").

Potete aiutarmi a guidarmi?

+0

Sei sicuro di non poter modificare l'URL per/green/basic/welcome in qualcosa che non si scontrerà con/green/{treeId}/{treeName}? –

+0

Lo so, dovrebbe essere il modo. Sono solo curioso di come '@ RequestMapping's vengono elaborati in ordine. –

+0

Sono curioso anche di questo, e non ho ancora trovato una risposta chiara. Qualcuno ha idea di questo? – InverseFalcon

risposta

7

Una corrispondenza esatta per un RequestMapping avrà la precedenza su uno con un PathVariable. Quindi avresti due mapping di richieste come hai fatto notare. Uno per gestire l'url specifico, e la versione variabile prenderà tutto il resto. controlli a molla per via diretta partite prima di controllare per il percorso partite variabili, in modo da ordine non importa se non si dispone di due mappature richiesta con lo stesso numero di variabili di percorso, che può sputare un IllegalStateException

Controllare il source of org.springframework.web.servlet.handler.AbstractHandlerMethodMapping per le specifiche. È gestito in lookupHandlerMethod().

Per determinare la corrispondenza migliore tra due RequestMapping s che non corrispondono esattamente, viene utilizzato il metodo compareTo() di RequestMappingInfo.

+1

Un utile dettaglio di implementazione da sapere. C'è qualche documentazione pubblica (diversa dalla sorgente) che definisce questo comportamento per l'API? – digitaljoel

Problemi correlati