Spring mvc 只有一个输入类型=file的Spring表单
我正试图用spring上传一个多部分文件 我想使用包含类型文件的输入,最终将该文件上载到我的控制器。因此,我创建了一个Spring mvc 只有一个输入类型=file的Spring表单,spring-mvc,file-upload,multipartform-data,modelattribute,spring-form,Spring Mvc,File Upload,Multipartform Data,Modelattribute,Spring Form,我正试图用spring上传一个多部分文件 我想使用包含类型文件的输入,最终将该文件上载到我的控制器。因此,我创建了一个FileForm类,它只是一个java bean,在类型MultipartFile上只有一个属性 我的JSP如下所示: <form:form modelAttribute="azrAgbFileForm" action="${uploadAzrAgb}" method="POST" enctype="multipart/form-data" cssClass
FileForm
类,它只是一个java bean,在类型MultipartFile
上只有一个属性
我的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
}
<beans:bean id="multipartResolver"
class="org.springframework.web.multipart.support.StandardServletMultipartResolver">
</beans:bean>
<?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>
问题是,当我单击submit时,我的模型属性azrAgbFileForm
出现在我的控制器方法中,其属性file
为空,即使我确实选择了要上载的文件,并且我的输入路径在我的JSP中设置为“file”
我还将我的multipartBean
配置为:
<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
}
<beans:bean id="multipartResolver"
class="org.springframework.web.multipart.support.StandardServletMultipartResolver">
</beans:bean>
<?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>
为什么我的表单的文件属性没有被设置?我真的需要一个表单类来完成这个任务吗?有没有一种方法可以使用Spring的Form标记,而不在本例中创建只有一个属性的Form类
根据要求,my web.xml的开头如下:
<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
}
<beans:bean id="multipartResolver"
class="org.springframework.web.multipart.support.StandardServletMultipartResolver">
</beans:bean>
<?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>
我在我的web.xml中的
DispatcherServlet
配置中添加了这个小标记,它成功了:
<multipart-config />
嗯,您不需要类来将表单
封装为属性。为了使用StandardServletMultipartResolver
,您应该使用Servlet3.0容器或更高版本,并且需要一些其他配置。你能发布你的web.xml或你的servet配置吗?我已经编辑了我的问题以包含它。够了吗?我缺少哪种配置?没有form类,如何使用Spring窗体?谢谢你的帮助。