63

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?

AdrieanKhisbe
  • 3,899
  • 8
  • 37
  • 45
Tom Tucker
  • 11,676
  • 22
  • 89
  • 130

1 Answers1

185

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 {

}
jricher
  • 2,663
  • 1
  • 18
  • 17