Action中跳转后参数丢失

问题:在请求中传递的参数在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的长度并没有超出限制),深入原因有待分析

你可能感兴趣的:(工作,JSP,Servlet)