2010-10-10 19 views
34

Ho più di 20 moduli che sono collegati dalla stessa pagina. Alcune forme condividono lo stesso controller, mentre altre usano le proprie. Ad esempio, modulo A, B e C utilizzare DefaultController, mentre il modulo D utilizza ControllerD.Spring MVC: mapping di più URL allo stesso controller

Quello che mi piacerebbe ottenere è mappare l'URL di ogni modulo in modo coerente.

Così, idealmente, la pagina dei link sarà simile:

  • o questo

    <a href="/formA.html">Form A</a> 
    <a href="/formB.html">Form B</a> 
    <a href="/formC.html">Form C</a> 
    <a href="/formD.html">Form D</a> 
    
  • o questo:

    <a href="/form.html?name=A">Form A</a> 
    <a href="/form.html?name=B">Form B</a> 
    <a href="/form.html?name=C">Form C</a> 
    <a href="/form.html?name=D">Form D</a> 
    

la domanda è come mappare ciascuno URL al controller appropriato. Con il primo pattern URL, dovresti mappare formD.html a ControllerD, ma non sai come mappare form[A|B|C].html a DefaultController. Con il secondo pattern URL, non so nemmeno da dove cominciare ...

Qualcuno ha mai fatto qualcosa del genere?

risposta

127

Dal momento che nessuno sembra aver messo la risposta completa qui ancora:

Il @RequestMapping annotazione può assumere un array per il suo parametro "valore". Per mappare questo a livello di controller utilizzando il primo modello, si può usare:

@Controller 
@RequestMapping(value={"/formA.html", "/formB.html", "/formC.html"}) 
public class ControllerA { 

} 

E poi:

@Controller 
@RequestMapping(value="/formD.html") 
public class ControllerD { 

} 
+0

Grazie per la risposta esplicita :) – Hossein

+0

ho messo questo sul mio metodo al posto del controller e funziona alla grande – user3885927

Problemi correlati