2010-10-10 7 views
34

Ich habe wie 20+ Formulare, die von der gleichen Seite verknüpft sind. Einige Formulare verwenden denselben Controller, andere verwenden ihre eigenen. Verwenden Sie beispielsweise A, B und CDefaultController, während Formular ControllerD verwendet.Spring MVC: Mapping mehrere URLs zu gleichen Controller

Was ich erreichen möchte ist, die URL zu jedem Formular in einer konsistenten Weise abzubilden.

So, im Idealfall würde die Link-Seite wie folgt aussehen:

  • entweder diese

    <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> 
    
  • oder dies:

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

Die Frage ist, wie um jeden zu kartieren URL zum entsprechenden Controller. Mit dem ersten URL-Muster würden Sie formD.html zu ControllerD zuordnen, aber nicht sicher, wie Sie form[A|B|C].html zu DefaultController zuordnen. Mit dem zweiten URL-Muster weiß ich nicht einmal, wo ich anfangen soll ...

Hat jemand so etwas getan?

Antwort

127

Da niemand scheint hier noch die volle Antwort gesetzt zu haben:

Die @RequestMapping Annotation ein Array für seinen „Wert“ Parameter erfolgen kann. So ordnen Sie diese auf Controller-Ebene das erste Muster verwenden, verwenden Sie:

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

} 

Und dann:

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

} 
+0

Danke für die explizite Antwort :) – Hossein

+0

ich das anstelle des Controllers auf meine Methode setzen und es funktioniert großartig. – user3885927

Verwandte Themen