2010-10-10 5 views
34

J'ai plus de 20 formulaires liés à 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 utilisent DefaultController, tandis que le formulaire D utilise ControllerD.Spring MVC: mappage de plusieurs URL au même contrôleur

Ce que je voudrais réaliser est de mapper l'URL à chaque forme de manière cohérente.

Donc, idéalement, la page de lien ressemblerait à ceci:

  • soit ce

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

    <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 pour cartographier chaque URL vers le contrôleur approprié. Avec le premier modèle d'URL, vous devez mapper formD.html sur 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 ...

Est-ce que quelqu'un a fait quelque chose comme ça?

Répondre

127

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

L'annotation @RequestMapping peut prendre un tableau pour son paramètre « valeur ». Pour mapper ce au niveau du contrôleur en utilisant le premier modèle, vous utilisez:

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

} 

Et puis:

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

} 
+0

Merci pour la réponse explicite :) – Hossein

+0

Je mets cela sur ma méthode à la place du contrôleur et ça marche très bien. – user3885927

Questions connexes