SpringMVC @RequestParam注解(二)

2023-05-13 11:20:29 浏览数 (1)

参数映射

@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对象。

0 人点赞