Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @当一个方法被多次调用时,RequestParam变量返回一组逗号分隔的值_Java_Spring_Spring Mvc - Fatal编程技术网

Java @当一个方法被多次调用时,RequestParam变量返回一组逗号分隔的值

Java @当一个方法被多次调用时,RequestParam变量返回一组逗号分隔的值,java,spring,spring-mvc,Java,Spring,Spring Mvc,我刚刚注意到,当连续调用控制器方法时,我用来检查POST参数(如用户名或ID)的@RequestParam变量的行为相当奇怪。它不返回当前参数值(例如,“Jason”、“Michael”、“John”),而是返回在此之前调用该方法的所有参数值的串联字符串。它导致变量的值为:“Jason,Michael,John”,而不仅仅是最后一个变量“John” 我注意到这种奇怪的行为在每一个会话中都会发生。当我将会话持续时间缩短为1分钟时,我注意到会话结束后,多个值也随之消失 如果我调用request.ge

我刚刚注意到,当连续调用控制器方法时,我用来检查POST参数(如用户名或ID)的@RequestParam变量的行为相当奇怪。它不返回当前参数值(例如,“Jason”、“Michael”、“John”),而是返回在此之前调用该方法的所有参数值的串联字符串。它导致变量的值为:“Jason,Michael,John”,而不仅仅是最后一个变量“John”

我注意到这种奇怪的行为在每一个会话中都会发生。当我将会话持续时间缩短为1分钟时,我注意到会话结束后,多个值也随之消失

如果我调用request.getParameter(“用户名”),这种事情就不会发生。当然,如果可能的话,我希望坚持SpringMVC约定


这是一个bug还是故意的?如何避免它?

这是JSP页面中的一个错误。您可能有一个隐藏的输入和一个同名的输入。这将产生一个以逗号分隔的值列表。

您的属性可能由spring在http会话中内部保存,并从中重新使用。您是否碰巧在spring控制器类上有一个配置,该配置将使该参数会话成为作用域(类上的
@SessionAttributes(“username”)
,或控制器bean的xml声明中的requireSession=true)


或者在从控制器重新播放页面时是否将其添加到模型中?

尝试不使用spring注释:

向方法中添加名为
HttpServletRequest

String s = request.getParameter("parameterName")

在实现ajax登录时遇到了同样的问题,并发现这是由尝试登录失败后触发的重定向引起的。不知怎么积累了j_用户名和j_密码参数

你能分享你提交请求的页面吗。将有助于分析。请添加控制器类的代码,该代码不一定能解释为什么每次调用时值会越来越多地串联在一起。使用相同名称隐藏的输入最多只能返回2个值(或者至少是一个固定数量的值)。这正好解释了为什么这些值不断被连接。隐藏目录中的值与输入中的值匹配。然后重复。然而,这并不能保证是这个问题的原因。是的,我同意你评论的前两句话。但是一个多值参数如何精确地触发重复部分呢?除此之外,OP还说,通过减少servlet会话超时,似乎解决了这个问题——因此我认为这更有可能与此相关。1。隐藏没有值,输入获取值;没有逗号分隔的值字符串。2.hidden由重新绘制页面时从输入提交的值填充。3.输入获取新值,隐藏具有旧值。在提交时,您会得到一个逗号分隔的值字符串,因为输入和隐藏具有相同的名称。4.重复第2步和第3步。Dude:“我注意到这种奇怪的行为是每次会话都会发生的。当我将会话持续时间缩短为1分钟时,我注意到会话结束后,多个值也会消失。”