我刚刚注意到,当控制器方法被连续调用时,我用来检查POST参数的@RequestParam变量(例如用户名或ids)表现得相当奇怪。它不返回当前参数值(例如,“Jason”,“Michael”,“John”),而是返回该方法在此之前调用的所有参数值的串联字符串。它导致变量具有以下值:“Jason,Michael,John”,而不仅仅是“John”,这是最后一个。
我注意到这种奇怪的行为是每次会话。当我将会话持续时间减少到仅1分钟时,我注意到会话结束后,多个值也是如此。
如果我调用request.getParameter(“username”),就不会发生这种情况。当然,如果可能的话,我想坚持使用Spring MVC约定。
这是一个错误,还是故意的?我怎么能避免它?
答案 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参数。