Spring4 MVC多部分

时间:2016-04-20 07:11:59

标签: java spring

我正在使用Spring4 MVC并尝试上传文件以及其他一些输入字段。

我在spring xml和jackson转换器中添加了多部分解析器

<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
   <beans:property name="maxUploadSize" value="250000"/>
   <beans:property name="defaultEncoding" value="utf8" />
</beans:bean>

<beans:bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
  <beans:property name="messageConverters" >
    <beans:list>
       <beans:ref bean="jacksonMessageConverter" />
    </beans:list>
  </beans:property>
</beans:bean>

在我的表单中,我已将其声明为enctype="multipart/form-data",以下是我的ajax调用

var oemManuals = new FormData();
oemManuals.append("name",$( "#name" ).val());
oemManuals.append("description",$( "#description" ).val());

 if($('#url').val()){
  oemManuals.append( 'url', $( '#url' )[0].files[0] );
}

$.ajax({  
    type: "POST",  
    url: "${pageContext.request.contextPath }/uploadManuals", 
    data:  oemManuals,
    processData: false,
    contentType: false,
    cache: false,
    dataType: "json",

    success: function(data){  

在我的控制器中,我尝试了@RequestParam并请求获得required paramerter name is null。虽然我看到参数存在

@RequestMapping(value="/uploadManuals", method = RequestMethod.POST)
public @ResponseBody List<OEMManuals> uploadManuals(HttpServletRequest request, 
                                                    @RequestParam MultipartFile url, 
                                                    HttpSession session) throws IOException{

所有值均为null。

有人可以建议我是否遗漏了什么。

由于

1 个答案:

答案 0 :(得分:0)

您在控制器中指定了参数'url'。

<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#ffffff" />
</shape>

因此,在你的ajax调用中必须有一个名为url的参数,如下所示

@RequestParam MultipartFile url