業務場景:SpringMVC項目使用ModelAndView進行重定向跳轉到另外一個action時,需要在url后面帶上參數
如果是帶參數帶一個頁面,直接用modelAndView.addObject(paramKey,paramValue);
原來代碼:
public ModelAndView toPage(){
....
return new ModelAndView(new RedirectView("login.do"));
}
重定向時候在login.do后面帶上參數,類似於login.do?param=test
解決方法,如下代碼:
public ModelAndView toPage(){
....
Map<String,Object> reqParam = new HashMap<String,Object>(16);
reqParam.put("param","test");
return new ModelAndView(new RedirectView("login.do"),reqParam);
}
看ModelAndView源碼注釋,是支持這種方法的,model是傳參,是用於重定向的時候帶上參數
public class ModelAndView{
....
public ModelAndView(View view, Map<String, ?> model) {
this.view = view;
if (model != null) {
this.getModelMap().addAllAttributes(model);
}
}
}
....
public ModelMap getModelMap() {
if (this.model == null) {
this.model = new ModelMap();
}
return this.model;
}
ModelMap是一個自定義的LinkedHashMap
public class ModelMap extends LinkedHashMap<String, Object> {
public ModelMap() {
}
....
}