我试图用spring上传一个MultipartFile。
我想使用Spring form tags来包含类型文件的输入,该文件最终会将此文件上传到我的控制器。所以我创建了一个FileForm
类,它只是一个只有MultipartFile
类型的一个属性的java bean。
我的JSP看起来像这样:
<form:form modelAttribute="azrAgbFileForm" action="${uploadAzrAgb}" method="POST" enctype="multipart/form-data" cssClass="form-horizontal highlighted" role="form">
<label for="uploadFile_upload_azrAgb" class="col-sm-4 control-label"><img src="<c:url value="/public/resources/images/doc.png"/>"></label>
<form:input id="uploadFile_upload_azrAgb" path="file" type="file" cssClass="form-control" cssErrorClass="form-control error"/>
<button type="submit" class="btn btn-primary" style="float:left; margin-top: 10px;">Upload bestand</button>
</form:form>
我的控制器方法如下:
@RequestMapping(value="/azrAgb", method={RequestMethod.GET, RequestMethod.POST})
public String uploadAzrAgb(@ModelAttribute(value="azrAgbFileForm") FileForm form, BindingResult result, Model model) {
//doing some stuff here
}
问题是,当我点击提交时,我的模型属性azrAgbFileForm
出现在我的控制器方法中,其属性file
为空,即使我确实选择了要上传的文件,我的输入路径在我的JSP中设置为"file"
。
我还将multipartBean
配置为:
<beans:bean id="multipartResolver"
class="org.springframework.web.multipart.support.StandardServletMultipartResolver">
</beans:bean>
为什么我的表单文件属性没有设置,我真的需要一个表单类吗?有没有办法使用Spring的Form标签,在这种情况下创建只有一个属性的Form类?
根据要求,我的web.xml开头如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!-- some servlet and security configurations -->
</web-app>
答案 0 :(得分:3)
我在我的web.xml中将这个小标签添加到我的DispatcherServlet
配置中并且有效:
<multipart-config />