SpringMVC 重定向參數RedirectAttributes實例
重定向參數RedirectAttributes
SpringMVC 中常用到 redirect 來實現重定向。但使用場景各有需求,如果隻是簡單的頁面跳轉顯然無法滿足所有要求,比如重定向時需要在 url 中拼接參數,或者返回的頁面需要傳遞 Model。
SpringMVC 用 RedirectAttributes 解決瞭這兩個需要。
1. addAttribute
@RequestMapping("/save") public String save(User user, RedirectAttributes redirectAttributes) { redirectAttributes.addAttribute("param", "value1"); return "redirect:/index"; }
請求 /save 後,跳轉至/index,並且會在url拼接 ?param=value1。
2. addFlashAttribute
@RequestMapping("/save") public String save(User user, RedirectAttributes redirectAttributes) { redirectAttributes.addFlashAttribute("param", "value1"); return "redirect:/index"; }
請求 /save 後,跳轉至 /index,並且可以在 index 對應的模版中通過表達式,比如 jsp 中 jstl 用 ${param},獲取返回值。該值其實是保存在 session 中的,並且會在下次重定向請求時刪除。
RedirectAttributes 中兩個方法的簡單介紹就是這樣。
重定向攜帶參數問題
問題描述
A.jsp發送請求進入Controller,並想重定向到B.jsp並攜帶參數,發現攜帶的參數前臺獲取不到,然後采用以下方法即可
@RequestMapping("/index") public String delete(String id, RedirectAttributes redirectAttributes) { redirectAttributes.addFlashAttribute("msg","刪除成功!"); return "redirect:hello"; }
@RequestMapping("hello") public String index( @ModelAttribute("msg") String msg) { return "sentinel"; }
首先進入delete方法,將msg放在redirectAttributes裡,然後重定向到hello,通過@ModelAttribute(“msg”) String msg獲取到msg的值,那麼自然sentinel頁面就能獲取到msg的值。
問題來源
B.jsp發送請求,跳轉到A.jsp,並將請求所產生的數據攜帶到A頁面。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- springboot如何重定向攜帶數據 RedirectAttributes
- SpringMVC 重新定向redirect請求中攜帶數據方式
- 詳細聊聊Spring MVC重定向與轉發
- springboot 如何重定向redirect 並隱藏參數
- SpringMVC處理數據輸出的實例代碼