参数映射
@RequestParam注解还支持将请求参数映射到方法的复杂类型参数中,例如:
代码语言:javascript复制@RequestMapping(value="/users", method=RequestMethod.GET)
public ModelAndView getUsers(UserQuery query) {
// 方法体
}
在上面的示例中,我们将UserQuery类型的参数作为方法的参数,SpringMVC会自动将请求中的所有参数映射到该参数的属性中。例如,如果请求中包含了以下参数:
代码语言:javascript复制page=1&size=10&name=张三&age=20
则SpringMVC会将page和size参数映射到UserQuery类的pageNum和pageSize属性中,将name和age参数映射到UserQuery类的name和age属性中。
需要注意的是,映射的参数名称必须与复杂类型参数中的属性名称相同,否则SpringMVC将无法完成参数映射。
示例
下面我们将使用一个简单的示例来演示@RequestParam注解的用法。
首先,我们定义一个UserController类,该类包含一个getUsers方法,用于获取用户列表。该方法使用@RequestParam注解获取名为page和size的请求参数,并将参数值转换为整数类型,然后将参数传递给UserService类的getUserList方法,最终返回用户列表:
代码语言:javascript复制@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value="/list", method=RequestMethod.GET)
public ModelAndView getUsers(@RequestParam(value="page", defaultValue="1") int pageNum, @RequestParam(value="size", defaultValue="10") int pageSize) {
List<User> userList = userService.getUserList(pageNum, pageSize);
ModelAndView mav = new ModelAndView("user/list");
mav.addObject("userList", userList);
return mav;
}
}
在上面的示例中,我们使用了@RequestMapping注解指定了UserController类的URL前缀为/user,而getUserList方法的URL路径为/list。使用@RequestParam注解获取了名为page和size的请求参数,并传递给UserService类的getUserList方法。最终返回一个包含用户列表的ModelAndView对象。