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?

1 Answer 1

186

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 {

}
Sign up to request clarification or add additional context in comments.

1 Comment

I put this on my method instead of the controller and it works great.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.