我们已经学习了如何定义一个Controller方法,如何为该方法设置对应的请求URI。假设一个URL请求映射到了定义的Controller方法,该方法如何处理呢?如何获取到参数呢?今天小博老师向大家介绍一个获取URITemplate参数的注解@PathVariable。
我们先看一个例子:
@RequestMapping(value="/boweifeng/{classId}", method=RequestMethod.GET)
public String findClass(@PathVariable int classId, Model model){
}
URI模板”/boweifeng/{classId}”指定了默认变量名为classId。当方法被请求时,参数classId的值会被赋值为请求的URI中对应部分的值。比如请求为/boweifeng/12,那么fincClass方法中classId参数会被赋值为12。参数名和URI模板变量名一致能自动赋值。如果两者不一致,则需要在@Pathvariable注解中加入对应的参数,如下面的例子:
@RequestMapping(value="/boweifeng/{classId}", method=RequestMethod.GET)
public String findClass(@PathVariable(“classId”) int clazzTag, Model model){
}
如果URI定义中有多个变量,可以在方法中定义对应数量的@PathVariable注解获取相应的参数值。
@PathVariable和方法中的参数可以是任何简单数据类型,例如:int,long,Date,等等。spring会自动转换,如果不匹配则抛出TypeMismatchException。