实际项目中碰到一个问题,spring mvc 转发的时候不论用哪种方式写,转发到的方法获取的参数总是空的
传参方法:
return new ModelAndView("forward:batGroup.do?gpId="+nbGroup.getGpId());
本想到在 “batGroup.do"方法接收到这个参数再进行处理。但目标方法一直为""
方法见下:
@RequestMapping(value="/batGroup.do")
public String batGroup(HttpServletRequest request,Model model){
System.out.println("------batGroup-----gpId="+request.getParameter("gpId"));
return "manage/gp_addupdate";
}
起初并没有认真对待,以为可能是自己哪里失误或不规范引起的。但怎么都过不去。后来抽烟换换头脑想了想,request 进第一个方法的时候应该已经有这个参数了,值为"",而最后return 的时候添加的参数,被反优先到了后面,所以转发后并没有使用我后添加的参数而是还优先使用了request中的这个参数。
想到原因后,做了个测试,果然!看来基础还是不够扎实。有些浮躁。
下面放出问题原凶:
<form name="myform" id="myform" action="<%=basePath %>manage/batGroupAddUpdate.do" method="post" enctype="multipart/form-data">
<input id="gpId" name="gpId" type="hidden" value="${gpinfo.gpId }"></input>
第一次提交时,request 共享对象中是有这个参数的,转发添加的参数,名子一样也不会覆盖。
改参数名解决。有改request中参数方法,请大神留下在评论!