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/5/spring-mvc/2.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
Spring MVC 3.2到4.1升级:@RequestParam未绑定_Spring_Spring Mvc - Fatal编程技术网

Spring MVC 3.2到4.1升级:@RequestParam未绑定

Spring MVC 3.2到4.1升级:@RequestParam未绑定,spring,spring-mvc,Spring,Spring Mvc,我正在从Spring3.2升级到4.1,并尝试更新我的MVC配置 简短版本:我可以确认请求发送参数: userId:USERNAME password:PASSWORD termsAccepted:true 内容类型为application/x-www-form-urlencoded Spring Security CSRF已禁用: 查看XSD,它表示我的自定义方法参数解析器不会覆盖默认的方法参数解析器: <mvc:annotation-driven > <mvc:a

我正在从Spring3.2升级到4.1,并尝试更新我的MVC配置

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

userId:USERNAME
password:PASSWORD
termsAccepted:true
内容类型为
application/x-www-form-urlencoded

Spring Security CSRF已禁用:

查看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>

作为升级的一部分,您还将Spring Security升级到4.1。在3.2和4.x之间,
/j\u spring\u security\u check的默认登录url更改为
/login
。(见附件)


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

您是否为自定义参数解析器扩展了正确的类/实现了正确的接口?与旧版本不同(尽管我假设您最终使用了
HandlerMethodArgumentResolver
)。你可以发布你的完整配置,也可以发布你的控制器。您是否也进行代码升级或仅进行框架升级?(事实上,它或多或少应该是一个替代品)。是的,我的客户解析器实现了HandlerMethodArgumentResolver。请求参数与控制器方法参数的绑定不应该由我不必显式定义的内置转换器实现吗?我在代码更新方面做得不多,主要是配置文件。另外,这只是IDE的一个警告,您的代码实际工作吗?IDE中有警告这一事实并不意味着什么。事实上,它并没有覆盖它们,而是对它们的补充。它不仅仅是一个警告。POST请求传递的用户ID实际上没有绑定到登录方法中的
@RequestParam字符串userid
。这是由于Spring安全性。。。默认登录url从
/j\u spring\u security\u check
更改为
/login
。。。它将表单提交到该url,而您在登录错误后基本上得到了转发/重定向。完成了,谢谢!我改变了我的自定义登录控制器的映射,它工作了。
@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.
}