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

时间:2011-09-21 17:00:14

标签: java spring spring-mvc

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

我注意到这种奇怪的行为是每次会话。当我将会话持续时间减少到仅1分钟时,我注意到会话结束后,多个值也是如此。

如果我调用request.getParameter(“username”),就不会发生这种情况。当然,如果可能的话,我想坚持使用Spring MVC约定。

这是一个错误,还是故意的?我怎么能避免它?

4 个答案:

答案 0 :(得分:2)

这是JSP页面中的错误。您可能有隐藏的和具有相同名称的输入。这会生成以逗号分隔的值列表。

答案 1 :(得分:0)

您的属性可能会在http会话中由spring在内部保存并从那里重新使用。你有没有机会,在你的spring控制器类中,有一个配置可以使该参数会话作用域(在类上为@SessionAttributes("username"),或在控制器bean的xml声明中为requireSession = true)?

或者,当您从控制器重新叠加页面时,是否将其添加到模型中?

答案 2 :(得分:0)

尝试没有弹簧注释:

向您的方法添加名为HttpServletRequest

的属性
String s = request.getParameter("parameterName")

答案 3 :(得分:0)

在实施ajax登录时遇到同样的问题,发现它是由尝试登录失败后触发的重定向引起的。不知何故积累了j_usernamen和j_password参数。