@RequestParam
It will be used in query string to bind the parameter with controller method parameters. We can see some possibility way of using request param.
1. Simple Request Param
@RequestMapping(value = "/order/details", method = RequestMethod.GET)
public String orderDetails(@RequestParam("orderDevice") String device,
Model model) {
return "orderDetails";
}
In the above method, the URI will be formed like
/order/details?orderDevice=Laptop and where Laptop is value of orderDevice argument.
2. Request Param with Required attribute
@RequestMapping(value = "/order/details", method = RequestMethod.GET)
public String orderDetails(@RequestParam("orderDevice", required=false)
String device, Model model) {
return "orderDetails";
}
If the value is missing for the orderDevice parameter, which value will be set to null, else value will be passed as usual.
Note:
Required attribute default value is True. If the parameter is missing status code 400 will be returned.
3. Request Param with Default value
@RequestMapping(value = "/order/details", method = RequestMethod.GET)
public String orderDetails(@RequestParam("orderDevice",
defaultValue="MobileDevice") String device, Model model) {
return "orderDetails";
}
If the value is missing for the orderDevice parameter, which value will be set to MobileDevice as a default value.
4. Request Param with multiple param values
@RequestMapping(value = "/order/details", method = RequestMethod.GET)
public String orderDetails(@RequestParam("orderDevice") String device,
@RequestParam("deviceId") String deviceId, Model model) {
model.addAttribute("msg", "Order device and its Id : "+
device+", "+deviceId);
return "orderDetails";
}
Above will be mapped to
/order/details?orderDevice=Laptop&deviceId=123
5. Request Param with Map object
@RequestMapping(value = "/order/details", method = RequestMethod.GET)
public String orderDetails(@RequestParam Map<String, String> queryMap,
Model model) {
String device = queryMap.get("orderDevice");
int deviceId = queryMap.get("deviceId");
model.addAttribute("msg", "Order device and its Id : "+
device+", "+deviceId);
return "orderDetails";
}
From the above, both orderDevice and deviceId mapped to Map object with the help of requestParam annotation. So you access with Map object like above code.
URI will be like
/order/details?orderDevice=Laptop&deviceId=123
6. Request Param with possibility ambiguous
@Controller
@RequestMapping("/Electronics")
public class ElectronicsController {
@RequestMapping(value = "/order/details", method = RequestMethod.GET)
public String orderDetails(@RequestParam("orderDevice") String device,
Model model) {
return "orderDetails";
}
@RequestMapping(value = "/order/details", method = RequestMethod.GET)
public String orderDetails(@RequestParam("deviceId") String deviceId,
Model model) {
return "orderDetails";
}
}
Above method make Run time exception, since complain about ambiguous mapping. Exception is look like Caused by: java.lang.IllegalStateException: Ambiguous mapping.