我們已經(jīng)學(xué)習(xí)了如何定義一個(gè)Controller方法,如何為該方法設(shè)置對(duì)應(yīng)的請(qǐng)求URI。假設(shè)一個(gè)URL請(qǐng)求映射到了定義的Controller方法,該方法如何處理呢?如何獲取到參數(shù)呢?今天小博老師向大家介紹一個(gè)獲取URITemplate參數(shù)的注解@PathVariable。
我們先看一個(gè)例子:
@RequestMapping(value="/boweifeng/{classId}", method=RequestMethod.GET)
public String findClass(@PathVariable int classId, Model model){
}
URI模板”/boweifeng/{classId}”指定了默認(rèn)變量名為classId。當(dāng)方法被請(qǐng)求時(shí),參數(shù)classId的值會(huì)被賦值為請(qǐng)求的URI中對(duì)應(yīng)部分的值。比如請(qǐng)求為/boweifeng/12,那么fincClass方法中classId參數(shù)會(huì)被賦值為12。參數(shù)名和URI模板變量名一致能自動(dòng)賦值。如果兩者不一致,則需要在@Pathvariable注解中加入對(duì)應(yīng)的參數(shù),如下面的例子:
@RequestMapping(value="/boweifeng/{classId}", method=RequestMethod.GET)
public String findClass(@PathVariable(“classId”) int clazzTag, Model model){
}
如果URI定義中有多個(gè)變量,可以在方法中定義對(duì)應(yīng)數(shù)量的@PathVariable注解獲取相應(yīng)的參數(shù)值。
@PathVariable和方法中的參數(shù)可以是任何簡單數(shù)據(jù)類型,例如:int,long,Date,等等。spring會(huì)自動(dòng)轉(zhuǎn)換,如果不匹配則拋出TypeMismatchException。