关键字: Spring Spring MVC redirect Session URL
如何在Spring MVC中redirect到一个页面,同时带些信息过去进行显示,但是不通过Session方式及URL方式?
想用跟正常的ModelAndView方式,但是用了RedirectView过去是拿不到的 ,如:
代码
- new ModelAndView(new RedirectView("xxx.do"),"modelName",modelMap);
只能用Session这种方式
代码
- request.getSession().setAttribute("msg",map);
或URL后面加信息
代码
- new ModelAndView(new RedirectView("xxx.do?msg=xyz");
然后在页面获取进行显示?
有没有更好的方法?
|
|
cookie?
内部重新定向!用过滤器或者AOP,把当前的request覆盖掉要转向的controller里的request,然后执行那个controller,渲染页面!
那个页面就可以用你上一个controller里处理好的数据项了!(contriller里处理的atribute不能重名,否则就覆盖掉了)
或者适当改造spring mvc框架!
in your controller:
then DispatcherServlet render the view with your modelMap:
没有测试过, 看了下spring mvc的source code.
从上面的代码来看,
是可以的...
你应该Debug一下, 看看model在什么地方丢了...
做了个测试, 证明我上面的判断是正确的...
而且也说明了,为什么你的方法拿不到正确的值
也就是无论用有modelName或无modelName的方式传递给ModelAndView,这些值是有都转化为URL进行表示了,只不过在页面上面无法通过通常的方式取得,如我用的JSTL 1.0.6标签:
或
看到你的view才明白,你原来是想做这个...:)
这种情况下,你不应该用redirect.
而应该直接用 new ModelAndView("viewName",Model);
为什么一定要用redirect呢?
区别在于F5不会现这个吧。
post and redirect
想要在两个请求之间传递信息,除了session, url transfer之外,还有很多手段啊:
cookie
cache
database
file
...
就靠你权衡了
表单重复提交的问题,不能直接用model来传了!只能用其他办法!
html的问题,没办法!