1. 程式人生 > >springMVC重定向時引數傳遞及中文引數亂碼問題

springMVC重定向時引數傳遞及中文引數亂碼問題

springMVC重定向時,若需要帶引數,如果直接用return "redirect:/items?g="+group的話,一者跳轉時引數可見不安全,二者,中文引數可能會亂碼,此時可在當前方法入參中加入RedirectAttributes attr,然後在方法體中用attr.addFlashAttribute("attrGroup","attrGroup");這樣,當前方法重定向時,就會自動在url後面拼接上該"attrGroup"引數。在跳轉的目標方法的入參中,可以使用@ModelAttribute(value="attrGroup")String attrGroup獲取該引數,以便後續使用。

以下為源連結:

http://www.bkjia.com/Javabc/863245.html

spring MVC 轉發與重定向(傳參),springmvc


return "forward:index.jsp"; //轉發 
return "forward:user.do?method=reg5"; //轉發
return new ModelAndView("/toList");//轉發
return "redirect:user.do?method=reg5"; //重定向
return "redirect:http://www.baidu.com"; //重定向
return new ModelAndView("redirect:/toList"); //重定向

重定向傳參

 方式一:自己手動拼接url

                    new ModelAndView("redirect:/toList?param1="+value1+"&param2="+value2);
                    這樣有個弊端,就是傳中文可能會有亂碼問題。

  方式二:用RedirectAttributes,這個是發現的一個比較好用的一個類
                    這裡用它的addAttribute方法,這個實際上重定向過去以後你看url,是它自動給你拼了你的url。
                    使用方法:

                     attr.addAttribute("param", value);
                    return "redirect:/namespace/toController";

  方式三:帶引數不拼接url頁面也能拿到值(重點是這個)
                 一般我估計重定向到都想用這種方式:

    @RequestMapping("/save")
    public String save(@ModelAttribute("form") Bean form,
            RedirectAttributes attr) throws Exception {
        String code = service.save(form);
        attr.addFlashAttribute("name", form.getName());
        attr.addFlashAttribute("success", "新增成功!");
        return "redirect:/index";
    }

    @RequestMapping("/index")
    public String save(@ModelAttribute("form") Bean form,
            RedirectAttributes attr) throws Exception {
        return "redirect:/main/list";
    }

頁面取值直接用el表示式就能獲得到,這裡的原理是放到session中,session在跳到頁面後馬上移除物件。所以你重新整理一下後這個值就會丟掉。


spring mvc註解裡controller類中方法可以不可以實現重定向

完全可以的!
@RequestMapping(value="/loginController")
public String login(Model model){
System.out.println("鳳姐進來了,趕緊跑吧!!");
return "redirect:/list";
}
 

Spring mvc重定向

你可以試著用ModelAndView這個物件定向頁面,一般springmvc我都用這個