2010-03-25 12 views
184

È possibile utilizzare più annotazioni a molla @RequestMapping in un metodo? Come:Annotazioni Spring @RequestMapping multiple

@RequestMapping("/") 
@RequestMapping("") 
@RequestMapping("/welcome") 
public String welcomeHandler(){ 
return("welcome"); 
} 

risposta

343

@RequestMapping ha un parametro String[] valore, così si dovrebbe essere in grado di specificare più valori in questo modo:

@RequestMapping(value={"", "/", "welcome"})

+1

Detto questo, ho problemi a far funzionare i valori "" o "/" nella mia applicazione. Lavorano per te? –

+0

C'è un modo per associare diverse visualizzazioni di successo e viste di moduli con ciascun URL di richiesta utilizzando più annotazioni? –

+0

@EdBrannin Ho bisogno di molti, custom, header, consumes, params, ecc. – deFreitas

12

Non è necessario. L'annotazione RequestMapping supporta caratteri jolly e percorsi stile ant. Sembra anche che tu voglia solo una vista predefinita, quindi puoi inserire

<mvc:view-controller path="/" view-name="welcome"/> 

nel tuo file di configurazione. Ciò inoltrerà tutte le richieste alla radice alla vista di benvenuto.

+0

È previsto che ci sia qualcosa tra queste due linee? Sto usando FreeMarkerViewResolver - quindi dovrei andare da questa parte ... Beh, immagino di poter creare più ViewResolver. – wuntee

+2

Non fornisce la flessibilità fornita da più annotazioni di RequestMapping. Ad esempio, se voglio che un metodo supporti il ​​valore "/ a" con POST o il valore "/ b" con GET. Ovviamente la soluzione alternativa è abbastanza semplice (refactoring della funzionalità in un terzo metodo), ma solo dicendo che sarebbe utile. – simon

19

Dal mio test (primavera 3.0.5), @RequestMapping(value={"", "/"}) - solo "/" opere, "" fa non. Tuttavia ho scoperto che questo funziona: @RequestMapping(value={"/", " * "}), lo " * " corrisponde a qualsiasi cosa, quindi sarà il gestore predefinito in caso nessun altro.

Problemi correlati