浏览 4027 次
锁定老帖子 主题:Action中跳转后参数丢失
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-14
错误原因:调试法相Action中跳转使用了ActionForward的setRedirect(true)导致;相关代码如下 … String actType = request.getParameter("actType"); String url = "/module/tdac/common/redirect_fail_.jsp"; TdacUrlIndexVo vo = getTdacUrlIndexDao().loadRecord(" ACT_TYPE=" + actType.trim()); url = vo.getDeleteUrl().trim() + getQueryString(request); ActionForward af = new ActionForward(url); af.setRedirect(true); //注释掉此句后可以解决 return af; … /** * 获得地址参数 * * @param request * @return */ public String getQueryString(HttpServletRequest request) { String result = ""; Enumeration parameterNames = request.getParameterNames(); while (parameterNames.hasMoreElements()) { String name = (String) parameterNames.nextElement(); if (!name.equals("action")) { result += "&" + name + "=" + request.getParameter(name); } } return result; } 解决方式:注释掉af.setRedirect(true);即可 小结:经过测试,返回前获取的url值包含了需要传递的值,但经过af.setRedirect(true);后,却无法获得(url的长度并没有超出限制),深入原因有待分析 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-09-14
Redirect和Forward的差别吧。。。
|
|
返回顶楼 | |
发表时间:2009-09-14
你还是将数据保存到session中吧。显示完毕,在JSP页面中清除
|
|
返回顶楼 | |
发表时间:2009-09-15
zuhpj 写道 Redirect和Forward的差别吧。。。
也许是吧,但不是所有的参数都拿不到,只是一两个,其他的都可以,这些参数都不是session中的,都是通过参数传递过来的( + getQueryString(request))。 重定向 ( Redirect): 是路径的跳转,内容和 url都改变。不允许带 request参数( session参数可以),即不允许在 servlet里给 request对象使用setAttribute方法传给下一页面。在 servlet里使用 response.sendRedirect(url) 方法。这里的 url前不带斜线 /,如 response.sendRedirect(”test.jsp“) url转发 ( Forward): 是页面的跳转,页面内容发生改变,url不变。可以带 request和 session参数。在 servlet里使用 getServletConfig().getServletContext().getRequestDispatcher(url).forward(request, response)。这里的 url前需要带斜线 /,如getServletConfig().getServletContext().getRequestDispatcher(”/test.jsp“).forward(request, response) |
|
返回顶楼 | |