Spring MVC – Phần 5: RedirectAttributes, chuyển tiếp trang với tham số trong Spring MVC.
Ở bài trước chúng ta đã tìm hiểu cách sử dụng nhiều controller để xử lý 1 request. Vậy làm thế nào để truyền dữ liệu giữa các controller đó?
RedirectAttributes
RedirectAttributes được dùng để truyền các giá trị, tham số giữa các controller khi thực hiện redirect:
Ví dụ: Từ page1 ta gửi tham số name tới method redirect()
, bên trong method redirect()
sẽ sử dụng RedirectAttributes
để chuyển lại tham số name đó tới method page2()
xử lý.
package stackjava.com.springmvchello.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.springframework.web.servlet.view.RedirectView; @Controller public class BaseController { @RequestMapping("/") public String page1() { return "page1"; } @RequestMapping("/redirect") public RedirectView redirect(@RequestParam("name") String name, RedirectAttributes redirectAttributes) { System.out.println(name); redirectAttributes.addAttribute("name", name); return new RedirectView("page2"); } @RequestMapping("/page2") public String page2(@RequestParam("name") String name, Model model) { model.addAttribute("name", name.toUpperCase()); return "page2"; } }
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <html> <head> <title>Spring MVC Redirect</title> </head> <body> <h2>Page1</h2> <form:form method="GET" action="redirect"> Name: <input type="text" name="name"><br/> <input type="submit" value="Redirect" /> </form:form> </body> </html>
<html> <head> <title>Spring MVC Redirect</title> </head> <body> <h2>Page2</h2> Hello ${name} </body> </html>
Download code ví dụ trên tại đây
References: