web-dev-qa-db-fra.com

Spring MVC: mappage de plusieurs URL au même contrôleur

J'ai plus de 20 formulaires qui sont liés depuis la même page. Certains formulaires partagent le même contrôleur, tandis que d'autres utilisent le leur. Par exemple, le formulaire A, B et C utilise DefaultController, tandis que le formulaire D utilise ControllerD.

Ce que j'aimerais réaliser est de mapper l'URL à chaque formulaire de manière cohérente.

Donc, idéalement, la page de liens devrait ressembler à:

  • soit ça

    <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>
    
  • ou ca:

    <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 question est de savoir comment mapper chaque URL au contrôleur approprié. Avec le premier modèle d'URL, vous mapperiez formD.html à ControllerD, mais vous ne savez pas comment mapper form[A|B|C].html à DefaultController. Avec le deuxième modèle d'URL, je ne sais même pas par où commencer ...

Quelqu'un a-t-il fait quelque chose comme ça?

45
Tom Tucker

Puisque personne ne semble avoir encore mis la réponse complète ici:

Le @RequestMapping l'annotation peut prendre un tableau pour son paramètre "value". Pour mapper cela au niveau du contrôleur en utilisant le premier modèle, vous utiliseriez:

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

}

Et alors:

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

}
151
jricher