2011-12-04 11 views
10

Ho creato un progetto Spring MVC utilizzando un modello che viene creato dai STS e questo è ciò che si genera nel controller:Come funziona il parametro del metodo di controllo di Spring MVC?

@RequestMapping(value = "/", method = RequestMethod.GET) 
public String home(Locale locale, Model model) { 
    //stuff 
} 

La mia domanda è, come si fa la variabile locale e model viene passato nel home metodo?

Inoltre, quali sono le opzioni possibili per gli oggetti che possono essere passati al metodo?

risposta

7

La risposta tecnica è l'utilizzo del meccanismo SpringMVC HandlerAdapter.

Tramite DispatcherServlet di primavera, un adattatore Handler viene creato e configurato per ogni richiesta inviata.

Penso che la "magia primaverile" in questo caso sia l'AnnotationMethodHandlerAdapter che si trova nei pacchetti mvc di primavera. Questo adattatore sarà fondamentalmente "mappato" a una richiesta HTTP basata su percorsi HTTP, metodi HTTP e parametri di richiesta legati alla richiesta.

Quindi, essentiamente quando il servlet dispatcher molla identifica una richiesta con il percorso "/", controllerà i metodi nel suo contenitore annotati con l'annotazione RequestMapping.

Nel tuo caso trovare gioco è fatto ...

Poi la vera magia inizia ...

utilizzando Java riflessione, primavera sarà quindi risolvere gli argomenti del tuo metodo di controllo. Quindi nel tuo caso le impostazioni internazionali e il modello ti verranno automaticamente trasferiti. Se hai incluso un altro parametro web come HttpSession, questo verrà passato a te.

Problemi correlati