Spring-MVC 3.2到4.1升级:@RequestParam没有绑定

时间:2016-06-09 17:18:02

标签: spring spring-mvc

我正在从Spring 3.2升级到4.1并尝试更新我的MVC配置。

简短版本:我可以确认请求发送了参数:

userId:USERNAME
password:PASSWORD
termsAccepted:true

内容类型为application/x-www-form-urlencoded

Spring Security CSRF已停用:<security:csrf disabled="true"/>

查看XSD,它说我的自定义方法参数解析器不会覆盖默认值:

<mvc:annotation-driven >
    <mvc:argument-resolvers>
        <bean class="org.jason.web.util.RetainUserHandlerMethodArgumentResolver"/>
        <bean class="org.jason.web.util.ConversationArgumentResolver"/>
    </mvc:argument-resolvers>
    <mvc:message-converters>
        <bean class="org.springframework.http.converter.FormHttpMessageConverter"/>
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
    </mvc:message-converters>
</mvc:annotation-driven>

任何人都可以提供任何见解吗?

编辑:这是控制器。这里没什么特别的。

@RequestMapping(value = "/login**")
public ModelAndView login(@RequestParam(value = "error", required = false) String error,
                        @RequestParam(value = "logout", required = false) String logout,
                        @RequestParam(value = "submit", required = false) String submit,
                        @RequestParam(value = "userId", required = false) String userId,
                        @RequestParam(value = "password", required = false) String password,
                        @RequestParam(value = "returnView", required = false) String returnView,
                        HttpServletRequest request,
                        HttpSession session
    ) {
    // login log. Return a Spring ModelAndView based on success/failure.
}

1 个答案:

答案 0 :(得分:2)

作为升级的一部分,您还将Spring Security升级到4.1。在3.2到4.x之间,默认登录网址已更改为/j_spring_security_check/login。 (见https://github.com/spring-projects/spring-security/issues/3010)。

现在,有效的Spring Security处理对/login的请求,并且您的控制器最终会因身份验证失败而接收重定向(由于它是一个新的空请求,因此不包含原始参数)。