2010-10-10 21 views
34

Tengo más de 20 formularios vinculados desde la misma página. Algunas formas comparten el mismo controlador, mientras que otras usan las suyas. Por ejemplo, el formulario A, B y C usan DefaultController, mientras que el formulario D usa ControllerD.Spring MVC: asignando varias URL al mismo controlador

Lo que me gustaría lograr es asignar la URL a cada formulario de manera consistente.

Así, idealmente, la página de enlaces se vería así:

  • ya sea este

    <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 esto:

    <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 cuestión es cómo para mapear cada URL al controlador apropiado. Con el primer patrón de URL, debe asignar formD.html a ControllerD, pero no está seguro de cómo asignar form[A|B|C].html a DefaultController. Con el segundo patrón de URL, ni siquiera sé por dónde empezar ...

¿Alguien ha hecho algo como esto?

Respuesta

127

Ya que nadie parece haber puesto la respuesta completa aquí todavía:

La anotación @RequestMapping puede tener una matriz para su parámetro "valor". Para asignar esta a nivel del controlador utilizando el primer patrón, se debería utilizar:

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

} 

Y luego:

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

} 
+0

Gracias por la respuesta explícita :) – Hossein

+0

pongo esto en mi método en lugar del controlador y funciona genial – user3885927

Cuestiones relacionadas