Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 只有一个输入类型=file的Spring表单_Spring Mvc_File Upload_Multipartform Data_Modelattribute_Spring Form - Fatal编程技术网

Spring mvc 只有一个输入类型=file的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

我正试图用spring上传一个多部分文件

我想使用包含类型文件的输入,最终将该文件上载到我的控制器。因此,我创建了一个
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窗体?谢谢你的帮助。