【java】@RequestParam 获取参数值有问题
很奇怪的问题@RequestParam
和request.getParameter("pID")
取到的值竟然不是同一个
求解
【补充】
debug了一下,传入参数pID
确实只有一个,但是@RequestParam
就是注入了两个
这就郁闷了
【第二次补充】
下午再加了ServletRequestListener
监听器
测试结果就是监听器的初始化
和销毁
参数都是对的pID
只有一个值
但是从controller
中通过@RequestParam
获取时又成为了两个。
越来越接近事实的真相。
【第三次补充】
这次再次添加了ServletRequestAttributeListener
监听器
结果大跌眼镜,不经过attributeReplaced
和attributeAdded
,request
就自动添加了三个pID
.通过@RequestParam
来的?怎么来的?为什么不经过监听器?为什么会有?疑问越来越多。。。。。
【第四次补充】
这次终于找到了问题所在异常
我们在controller
和service
中有抛异常的处理
在springMVC
提供的HandlerExceptionResolver
集中处理异常
我们的测试是把异常注释
,然后获取pID
正常没问题
最后看怎么处理了,还有一次补充
【最后补充】
返回视图出了问题,原因是我们返回json
不返回视图,所以应该在HandlerExceptionResolver
中将return null
改为return new ModelAndView()
;
回答
你是不是在参数里带了两个pID?比如:
http://.../showCorrelation?pID=34cb...&pID=3574...
req.getParameter("pID")只会取到其中一个(如果有多个以"pID"为key参数,具体取第几个请查下Servlet API的Javadoc或Servlet Container的源码),要取所有以"pID"为key的参数必须用req.getParameterValues();
你查下Spring MVC对@RequestParam是怎么解释的,或者看下源码是怎么实现的,会不会把所有以"pID"为key的参数都取出来,多余一个的话就用逗号连接?
返回视图出了问题,原因是我们返回json
不返回视图,所以应该在HandlerExceptionResolver
中将return null
改为return new ModelAndView()
;
以上是 【java】@RequestParam 获取参数值有问题 的全部内容, 来源链接: utcz.com/a/74994.html