2012-10-03 12 views
12

Con Spring MVC, so come si imposta RequestMapping in ogni controller e metodo/azione.Spring MVC Request mapping, può essere dinamico/configurabile?

Ma cosa succede se ho voluto questo per essere configurabile, così per esempio I seguenti controller:

BlogController 
- with methods for listing blogs entries, single entry, new, update, etc. 
ArticleController 
- with methods for listing articles entries, single entry, new, update, etc. 

Ora nella mia richiesta, l'amministratore può impostare 2 blog per il webiste, e 1 articolo sezione in modo che il gli URL sarebbe come:

www.example.com/article_section1/ - uses ArticleController 
www.example.com/blog1/ - uses BlogController 
www.example.com/blog2/ - uses BlogController 

Forse dopo un po 'l'amministratore desidera un'altra sezione articolo, in modo che solo configurare che, con una nuova sezione come:

www.example.com/article_section2/ 

Questo deve funzionare dinamicamente/al volo senza dover riavviare l'applicazione, naturalmente.

La mia domanda riguarda solo il modo in cui gestirò i mapping url sui miei controller.

Come sarebbe possibile con Spring MVC?

So solo come mappare gli URL ai controller utilizzando @RequestMapping("/helloWorld") a livello di controller o di metodo, ma questo rende i mapping di URL corretti e non configurabili come il modo in cui lo voglio.

Aggiornamento:

sarò memorizzare i percorsi nel database, e con la mappatura al tipo di controller in modo simile:

path     controller 
/article_section1/ article 
/blog1/    blog 
/blog2/    blog 
.. 

Con le informazioni di cui sopra, come potrei spedizione la richiesta al controller corretto?

Anche in questo caso, senza guardare per ricaricare/ridistribuire, e mi rendo conto ciò richiederà più lavoro, ma la sua nelle specifiche :)

+1

Come hai finito per implementare questo? Sono in una situazione simile. – DairyLea

risposta

5

Sarebbe questo tipo di URL lavoro di mappatura per voi?

www.example.com/blog/1/ 
www.example.com/blog/2/ 

Se sì, allora questo è facile: Spring 3 supporta variabili di percorso: http://static.springsource.org/spring/docs/3.0.x/reference/mvc.html#mvc-ann-requestmapping-advanced

In alternativa, è possibile creare una mappatura richiesta generica e la propria sub-dispatcher che legge un file di configurazione, ma io credo che sia probabilmente più lavoro di quello che vale.

+3

Voglio il controllo completo sull'URL, so delle variabili del percorso grazie. In realtà leggerò i percorsi dal database, quindi inoltrerò richieste in qualche modo al controller corretto, ma non so come. – loyalflow

0

non funziona? @RequestMapping ("/ helloWorld *")

2

Cambiare veramente i mapping delle richieste in fase di esecuzione potrebbe essere difficile (e non molto consigliato, poiché possono verificarsi facilmente errori di piccole dimensioni). Se vuoi ancora farlo, forse JRebel, e in modo più specifico LiveRebel può essere interessante per la ridistribuzione dal vivo del codice e della configurazione.

Altrimenti, come altri post suggeriti, RequestMappings supporta i caratteri jolly, i limiti di questo dovrebbero essere chiari dopo una rapida lettura della documentazione ufficiale.

+2

no Voglio il controllo completo dell'URL, quindi non funzionerà e non voglio ricaricare/ridistribuire alcun codice. speravo di poter in qualche modo inoltrare la richiesta al controller corretto in qualche modo. – loyalflow

+3

Scrivere il proprio HandlerMapping potrebbe essere interessante http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/servlet/HandlerMapping.html –

+0

grazie per il collegamento, questo sembra essere la direzione che dovrò prendere dato i requisiti. – loyalflow

1

Provare a utilizzare con @RequestMapping jolly come di seguito:

@RequestMapping(value="/article_section*/"} 
public void getArticle(....){ 
//TODO implementation 
} 

@RequestMapping(value="/blog*/"} 
public void getBlog(....){ 
//TODO implementation 
} 

Spero che questo aiuti !!!