Spring MVC – Phần 3: Annotation(2) – Annotation @PathVariable, @RequestParam trong Spring MVC
1. Annotation @PathVariable
Annotation PathVariable được sử dụng để xử lý những URI động, có một hoặc nhiều paramter bên trong URI.
Ví dụ:
@RequestMapping("/test1/{id}")
public String test1(@PathVariable("id") int id, Model model) {
model.addAttribute("id", id);
return "test1";
}
@RequestMapping("/test2/{id}/{name}")
public String test2(@PathVariable("id") int id, @PathVariable("name") String name, Model model) {
model.addAttribute("id", id);
model.addAttribute("name", name);
return "test2";
}
2. Annotation @RequestParam
Khi submit method GET, trên URL sẽ chứa các giá trị của các ô input được submit. Sử dụng Annotation RequestParam giúp chúng ta lấy được giá trị đó.
(Lưu ý: với trường hợp Submit form với method = GET, bạn vẫn có thể sử dụng @ModelAttribute để ép các tham số thành đối tượng)
Ví dụ:
@RequestMapping("/test2/{id}/{name}")
public String test2(@PathVariable("id") int id, @PathVariable("name") String name, Model model) {
model.addAttribute("id", id);
model.addAttribute("name", name);
return "test2";
}
3. Demo
package stackjava.com.springmvchello.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class HomeController {
@RequestMapping("/")
public String home() {
return "home";
}
@RequestMapping("/test1/{id}")
public String test1(@PathVariable("id") int id, Model model) {
model.addAttribute("id", id);
return "test1";
}
@RequestMapping("/test2/{id}/{name}")
public String test2(@PathVariable("id") int id, @PathVariable("name") String name, Model model) {
model.addAttribute("id", id);
model.addAttribute("name", name);
return "test2";
}
@RequestMapping("/test3")
public String test3(@RequestParam("name") String name, @RequestParam("id") int id, Model model) {
model.addAttribute("id", id);
model.addAttribute("name", name);
return "test3";
}
}
Các file view:
<html>
<head>
<title>Spring MVC Annotation</title>
</head>
<body>
<h2>home.jsp</h2>
<a href="test1/1">/test1/1</a>
<br />
<a href="test2/2/kai">/test2/2/kai</a>
<br />
<fieldset>
<legend>/test3?id=&name=</legend>
<form action="test3">
Id: <input type="number" name="id" /> <br />
Name: <input type="text" name="name" /> <br />
<input type="submit" value="submit" />
</form>
</fieldset>
</body>
</html>
<html>
<head>
<title>Spring MVC Annotation</title>
</head>
<body>
<h2>test1.jsp</h2>
Id: ${id}
<br />
</body>
</html>
<html>
<head>
<title>Spring MVC Annotation</title>
</head>
<body>
<h2>test2.jsp</h2>
Id: ${id} <br>
Name: ${name} <br/>
</body>
</html>
<html>
<head>
<title>Spring MVC Annotation</title>
</head>
<body>
<h2>test3.jsp</h2>
Id: ${id} <br>
Name: ${name} <br/>
</body>
</html>
Kết quả:


Download code ví dụ trên tại đây
References:
https://www.journaldev.com/3358/spring-requestmapping-requestparam-pathvariable-example