我正在使用spring mvc框架尝试一个简单的Web应用程序here。在tomcat服务器上运行我的项目并在表单中输入数据并单击提交按钮后,我收到以下错误消息:
HTTP Status 500:Request processing failed; nested exception is java.lang.ClassCastException:
org.springframework.web.bind.ServletRequestDataBinder cannot be cast to org.springframework.web.bind.support.WebRequestDataBinder
例外:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.ClassCastException: org.springframework.web.bind.ServletRequestDataBinder cannot be cast to org.springframework.web.bind.support.WebRequestDataBinder
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:625)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:536)
javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
根本原因:
java.lang.ClassCastException: org.springframework.web.bind.ServletRequestDataBinder cannot be cast to org.springframework.web.bind.support.WebRequestDataBinder
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doBind(HandlerMethodInvoker.java:754)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doBind(HandlerMethodInvoker.java:744)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:296)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:163)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:354)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:342)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:763)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:709)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:613)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:536)
javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
您可以查看上述链接上的文件内容。我正在尝试上面链接中给出的相同代码而不做任何更改。请帮我解决这个问题。
答案 0 :(得分:0)
这可能与绑定和initBinder方法的使用有关。您可以检查您正在使用的Spring版本。我怀疑此代码与您正在使用的Spring版本之间可能存在一些兼容性问题。
对于旧版本的Spring,我们使用带有以下签名protected void initBinder(HttpServletRequest request, ServletRequestDataBinder dataBinder) throws Exception
的非带注释的initBinder方法,然后使用ServletRequestDataBinder中的registerCustomEditor将请求参数绑定到命令对象
在我看来,在调用的动态目标上有一个使用WebRequestDataBinder而不是ServletRequestDataBinder的initBinder的覆盖版本的调用(通过多态,这可能是可能的)