论坛首页 入门技术论坛

Action中跳转后参数丢失

浏览 4027 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-09-14  
问题:在请求中传递的参数在Action中跳转后丢失,使用request.getParameter方法获取为null
错误原因:调试法相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的长度并没有超出限制),深入原因有待分析
   发表时间:2009-09-14  
Redirect和Forward的差别吧。。。
0 请登录后投票
   发表时间:2009-09-14  
你还是将数据保存到session中吧。显示完毕,在JSP页面中清除
0 请登录后投票
   发表时间: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)
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics