【问题标题】:Spring MVC - Multipart form dataSpring MVC - 多部分表单数据
【发布时间】:2015-10-15 09:17:54
【问题描述】:

我得到了这个jsp文件:

<form:form class="main-section" modelAttribute="demandeForm" commandName="demandeForm" 
name="demandeForm" method="post" enctype="multipart/form-data;charset=UTF-8" action="/validate.do?valider=valider">

<!-- Some input text -->

<ul>
   <li>
      <input type="file" name="file" >
   </li>
   <li>
      <input type="file" name="file" >
   </li>
   <li>
      <input type="file" name="file" >
   </li>
</ul>

这是我的表单类:

public class DemandeForm {

    private MultipartFile[] file;

    public MultipartFile[] getFile() {
        return file;
    }

    public void setFile(final MultipartFile[] pFile) {
        this.file = pFile;
    }
}

还有我的控制器:

@RequestMapping(method = RequestMethod.POST, params = "valider")
public String valider(@Valid final DemandeForm pForm, final BindingResult pResult, final Model pModel, final HttpServletRequest pRequest) {

    // do things

    if (pResult.hasErrors()) {
        return MY_VUE;
    }

    // do things

}

pResult有绑定错误,这里是错误:

Failed to convert property value of type java.lang.String[] 
to required type org.springframework.web.multipart.MultipartFile[] 
for property file; nested exception is java.lang.IllegalStateException: 
Cannot convert value of type [java.lang.String] to required type 
[org.springframework.web.multipart.MultipartFile] for property file[0]: 
no matching editors or conversion strategy found 

自从我在 enctype 值上添加了charse=UTF-8 后,就出现了错误。我需要这个,因为我有这些重音符号和 UTF-8 字符的文件。

我该如何处理?

【问题讨论】:

    标签: java spring jsp spring-mvc multipartform-data


    【解决方案1】:

    您是否尝试过:

    <bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
      <property name="defaultEncoding"><value>utf-8</value></property>
    </bean>
    

    不要使用:

    enctype="multipart/form-data;charset=UTF-8"
    

    在你的表单中

    【讨论】:

      【解决方案2】:

      您可以将控制器参数设置为

      @RequestParam("file") MultipartFile file
      

      然后你可以得到文件名、大小等...

      file.getOriginalFilename()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-10
        • 1970-01-01
        • 2018-12-06
        • 2020-09-03
        • 1970-01-01
        相关资源
        最近更新 更多