qq_33632491
portions
采纳率0%
2018-04-04 07:07 阅读 1.0k

springMVC form 表单提交错误,类型转换错误

5

1、我用form表单提交表单,偶尔会报类型转换的错误,一直找不到原因,并不是每次都这样,偶尔几天出一个。
2、我不是直接提交的表单,使用的是easyui的form提交,因为可以回调。
3、我的form表单,设置了


下面是我的部分代码和错误,请教各位了

四月 04, 2018 8:29:53 上午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [SpringMVC] in context with path [/XMGL] threw exception [Request processing failed; nested exception is org.springframework.beans.ConversionNotSupportedException: Failed to convert value of type 'java.lang.String' to required type 'org.springframework.web.multipart.commons.CommonsMultipartFile'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.springframework.web.multipart.commons.CommonsMultipartFile]: no matching editors or conversion strategy found] with root cause
java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.springframework.web.multipart.commons.CommonsMultipartFile]: no matching editors or conversion strategy found
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:287)
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:107)
at org.springframework.beans.TypeConverterSupport.doConvert(TypeConverterSupport.java:64)
at org.springframework.beans.TypeConverterSupport.convertIfNecessary(TypeConverterSupport.java:47)
at org.springframework.validation.DataBinder.convertIfNecessary(DataBinder.java:603)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveRequestParam(HandlerMethodInvoker.java:519)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:352)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:172)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:434)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2549)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2538)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)



  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

7条回答 默认 最新

  • qq_33632491 portions 2018-04-04 07:07

    有些代码没有提交上去,我设置了

    点赞 评论 复制链接分享
  • qq_33632491 portions 2018-04-04 07:08

    ``` <form method="post" id="peopleInfo" enctype="multipart/form-data"

    
    
    点赞 评论 复制链接分享
  • JackStone_CSDN JackStone_csdn 2018-04-04 07:13

    可能是浏览器兼容问题,form表单提交经常会出现浏览器引起的各种问题,异步提交表单,需要禁用掉原有的提交方式

    点赞 评论 复制链接分享
  • huang812561 huang812561 2018-04-04 08:22

    enctype="multipart/form-data"

    点赞 评论 复制链接分享
  • lyhyly 刘无心 2018-04-04 08:29

    是给的数据不对吗?是不是要int型的你给了个字母什么的,导致参数绑定有问题。

    点赞 评论 复制链接分享
  • qq_41559090 qq_41559090 2018-04-04 08:31

    会员注册

    请认真填写以下内容
    用户名:
    密码:
    确认密码:
    选择头像m01.gif
    验证码: code换一张

    表单数据提交到本页面,下面是js处理

    /*注册表单提交*/

    function formDeal()

    {

    var btnSubmit = document.getElementById('submit');

    var formId = document.getElementById('registerForm');

    btnSubmit.onclick = function()

    {

    //表单的submit()方法不能提交表单

    formId.submit();

    }

    }

    如果表单提交,在本页面有一段提示信息

    if(!empty($_GET['action']) && $_GET['action'] == 'register')

    {

    echo '你提交了数据';

    exit();

    }


    结果是测试了许久都没有看到提示信息,以为是代码错了或者方法写错了,仔细核对,在结果官方文档,确认没有出错。

    formId.submit()不能提交,就暂时只好把btnSubmit的type改为submit

    this.type="submit"

    在网上查了资料,原因归结为两点:

    1、表单中不能有name=”submit” 的标签

    2、表单中不能缺少《enctype=”multipart/form-data”》

    经测试,此两点乃荒谬,并没有解决我的问题(或许是我的问题环境不一样)

    后来,以为论坛的坛友建议我把注册按钮的ID改个名字,不用submit。改正之后,表单正常提交,提示信息出现。

    最后总结:button的id不要设置为submit,否则可能会引起混淆,导致表单的submit()方法不能提交表单。在命名ID时,名字最好不要和现有的api在名称上重复,避免不必要的烦扰。

    点赞 评论 复制链接分享
  • qq_17025903 南归北隐 2018-04-04 10:05

    1.看Dao层sql是不是写错了
    2.看serivce 有没有加上注解

    点赞 评论 复制链接分享