Spring MVC: Mapping Multiple URLs to Same Controller

JavaSpringSpring Mvc

Java Problem Overview


I have like 20+ forms which are linked from the same page. Some forms share the same controller, while others use their own. For example, form A, B, and C use DefaultController, while form D uses ControllerD.

What I would like to achieve is to map the URL to each form in a consistent way.

So, ideally, the link page would look like :

  • either this

      <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>
    
  • or this:

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

The question is how to map each URL to the appropriate controller. With the first URL pattern, you would map formD.html to ControllerD, but not sure how to map form[A|B|C].html to DefaultController. With the second URL pattern, I don't even know where to begin...

Has anyone done something like this?

Java Solutions


Solution 1 - Java

Since nobody seems to have put the full answer on here yet:

The @RequestMapping annotation can take an array for its "value" parameter. To map this at the controller level using the first pattern, you would use:

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

}

And then:

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

}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionTom TuckerView Question on Stackoverflow
Solution 1 - JavajricherView Answer on Stackoverflow