Spring 注解之@PathVariable
@PathVariable只支持一個屬性value,類型是為String,代表綁定的屬性名稱。默認不傳遞時,綁定為同名的形參。
用來便捷地提取URL中的動態(tài)參數(shù)。其英文注釋如下:
Annotation which indicates that a method parameter should be bound to a URI template variable. Supported for {@link RequestMapping} annotated handler methods in Servlet environments.
應(yīng)用時,在@RequestMapping請求路徑中,將需要傳遞的參數(shù)用花括號{}括起來,然后,通過@PathVariable("參數(shù)名稱")獲取URL中對應(yīng)的參數(shù)值。如果@PathVariable標明參數(shù)名稱,則參數(shù)名稱必須和URL中參數(shù)名稱一致。
@RequestMapping("/viewUser/{id}/{name}")
public Map<String, Object> viewUser(@PathVariable("id") Integer idInt, @PathVariable Integer name) {
System.out.println("@PathVariable中 請求參數(shù) id = " + idInt);
Map<String, Object> user = new HashMap<>();
user.put("id", idInt);
user.put("name", name);
return user;
}
/**
* @Title viewUser2
* @Description @PathVariable未標注參數(shù)名稱,則被注解參數(shù)名必須后URL中的一致
* @date 2018-12-15 11:08
*/
@RequestMapping("/owners/{ownerId}")
public Map<String, Object> viewUser2(@PathVariable Integer ownerId) {
System.out.println("@PathVariable中 請求參數(shù) ownerId = " + ownerId);
Map<String, Object> user = new HashMap<>();
user.put("id", ownerId);
user.put("name", "Lucy");
return user;
}
URI 模板 “/owners/{ownerId}” 指定了一個名叫 ownerId的變量。當控制器處理這個請求時,ownerId的值被設(shè)置為從 URI 中解析出來。比如,當請求 /viewUser/100 進來時,100 就是 ownerId的值。 @PathVariable還可以結(jié)合@GetMapping和@PostMapping一起使用:
@PostMapping("/getUserById/{id}")
public User getUserById(@RequestBody User user, @PathVariable Long id) {
user.setId(id);
logger.info("執(zhí)行結(jié)果user = {}", user);
return user;
}
@PathVariable注解的required屬性無論怎么設(shè)置,請求的時候,都必須傳參,否則,拋出如下異常:no mapping for post xxx。
讀后有收獲,小禮物走一走,請作者喝咖啡。
Buy me a coffee. ?Get red packets.作者:樓蘭胡楊
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但請注明原文鏈接,并保留此段聲明,否則保留追究法律責(zé)任的權(quán)利。

浙公網(wǎng)安備 33010602011771號