87

In this period I am studing the Spring MVC showcase example (downloadable from STS dasboard) and I have some simple question about the Request Mapping examples:

1) In my home.jsp page I have this link:

        <li>
            <a id="byParameter" class="textLink" href="<c:url value="/mapping/parameter?foo=bar" />">By path, method, and presence of parameter</a>
        </li>

As you can see by this link I am doing an HTTP GET Request having a "foo" parameter containing the value: "bar".

This HTTP Request is handled by the following method of the controller class MappingController:

@RequestMapping(value="/mapping/parameter", method=RequestMethod.GET, params="foo")
public @ResponseBody String byParameter() {
    return "Mapped by path + method + presence of query parameter! (MappingController)";
}

This method manage HTTP Request (only GET type) that have a parameter named "foo"

How can I take the value ("bar") of this parameter and put it in a variable inside the code of my by Parameter method?

Willi Mentzel
  • 27,862
  • 20
  • 113
  • 121
AndreaNobili
  • 40,955
  • 107
  • 324
  • 596

2 Answers2

185

As explained in the documentation, by using an @RequestParam annotation:

public @ResponseBody String byParameter(@RequestParam("foo") String foo) {
    return "Mapped by path + method + presence of query parameter! (MappingController) - foo = "
           + foo;
}
JB Nizet
  • 678,734
  • 91
  • 1,224
  • 1,255
  • 3
    In case when there are 10 number of parameters, do we have to do this 10 times or there is a better way for thar scenario – Count May 23 '14 at 09:19
  • 2
    @Count: click the link I gave to the documentation, then scroll up a little until the paragraph "Supported method argument types", and read the part about "Command or form objects" – JB Nizet May 23 '14 at 09:43
43

You could also use a URI template. If you structured your request into a restful URL Spring could parse the provided value from the url.

HTML

<li>
    <a id="byParameter" 
       class="textLink" href="<c:url value="/mapping/parameter/bar />">By path, method,and
           presence of parameter</a>
</li>

Controller

@RequestMapping(value="/mapping/parameter/{foo}", method=RequestMethod.GET)
public @ResponseBody String byParameter(@PathVariable String foo) {
    //Perform logic with foo
    return "Mapped by path + method + presence of query parameter! (MappingController)";
}

Spring URI Template Documentation

Kevin Bowersox
  • 93,289
  • 19
  • 159
  • 189