一、RequestParam概述
RequestParam是Spring MVC中常用的註解之一,用於將請求參數映射到控制器方法的參數上。在默認情況下,RequestParam會將請求參數與控制器方法參數名匹配,並將請求參數的值賦值給控制器方法參數。如下面的代碼所示:
@GetMapping("/hello") public String sayHello(@RequestParam String name) { return "Hello " + name; }
當我們訪問”http://localhost:8080/hello?name=Tom”時,控制器方法“sayHello”中的參數“name”將被自動映射到請求參數”name”的值,最終返回”Hello Tom”。
二、RequestParam非必填
有時我們希望請求參數是可選的,即在請求中可以不包含該參數。這時我們可以使用RequestParam的required屬性。當required屬性設置為true時,如果請求中沒有該參數,則會拋出MissingServletRequestParameterException異常。當required屬性設置為false時,如果請求中沒有該參數,則控制器方法參數的值將為null。
@GetMapping("/hello") public String sayHello(@RequestParam(required = false) String name) { if(name == null) { return "Hello World"; } else { return "Hello " + name; } }
當我們訪問”http://localhost:8080/hello”時,控制器方法“sayHello”中的參數“name”將為null,最終返回”Hello World”。當我們訪問”http://localhost:8080/hello?name=Tom”時,控制器方法“sayHello”中的參數“name”將被賦值為”Tom”,最終返回”Hello Tom”。
三、RequestParam默認值
除了將required屬性設置為false之外,RequestParam還可以通過設置defaultValue屬性來指定請求參數的默認值。當請求中沒有該參數時,控制器方法參數的值將為defaultValue的值。
@GetMapping("/hello") public String sayHello(@RequestParam(defaultValue = "World") String name) { return "Hello " + name; }
當我們訪問”http://localhost:8080/hello”時,控制器方法“sayHello”中的參數“name”將為”World”,最終返回”Hello World”。當我們訪問”http://localhost:8080/hello?name=Tom”時,控制器方法“sayHello”中的參數“name”將被賦值為”Tom”,最終返回”Hello Tom”。
四、RequestParam多個參數
RequestParam還支持映射多個參數,可以使用數組或集合作為控制器方法參數。如果請求中沒有包含該參數,則數組或集合的長度為0或空集合。
@GetMapping("/hello") public String sayHello(@RequestParam String[] names) { if(names.length == 0) { return "Hello World"; } else { return "Hello " + String.join(",", names); } } @GetMapping("/hello") public String sayHello(@RequestParam List names) { if(names.isEmpty()) { return "Hello World"; } else { return "Hello " + String.join(",", names); } }
當我們訪問”http://localhost:8080/hello”時,控制器方法“sayHello”中的數組或集合將為空,最終返回”Hello World”。當我們訪問”http://localhost:8080/hello?names=Tom&names=Jerry”時,控制器方法“sayHello”中的數組或集合將包含”Tom”和”Jerry”,最終返回”Hello Tom,Jerry”。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/248368.html