2015-10-20 50 views
0

这里是我的Ajax调用:REST-泽西 - 例外获得参数

uploadExcel : function(jsonData,success, error) { 
    var url = "/TestProject/test/Uploader; 
    $.ajaxFileUpload({ 
     url : url, 
     secureuri : false, 
     fileElementId : 'FileUpload', 
     contentType : 'multipart/form-data', 
     dataType : 'jsonString', 
     processData : false, 
     type : 'POST', 
     data: jsonData, 
     success : success, 
     error : error 
    }); 
} 

Java方法签名:

@Path("/Uploader") 
@POST 
@Consumes('multipart/form-data') 
public String validateAndUpload(@FormDataParam("FileUpload") byte[] inputByteArray, 
           @Context HttpServletRequest request, 
           @FormParam("jsonData") String uploadData) {} 

这里是我得到

在这里的错误是堆栈跟踪:

SEVERE: Servlet.service() for servlet [ServletAdaptor] in context with path [/TestProject] threw exception [com.sun.jersey.api.container.ContainerException: Exception obtaining parameters] with root cause 
java.lang.NullPointerException 
at com.sun.jersey.server.impl.inject.InjectableValuesProvider.getInjectableValues(InjectableValuesProvider.java:43) 
at com.sun.jersey.multipart.impl.FormDataMultiPartDispatchProvider$FormDataInjectableValuesProvider.getInjectableValues(FormDataMultiPartDispatchProvider.java:115) 
at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$EntityParamInInvoker.getParams(AbstractResourceMethodDispatchProvider.java:126) 
at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:154) 
at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67) 
at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:163) 
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111) 
at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:71) 
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111) 

回答

0

Tr Y:

@FormDataParam("FileUpload") InputStream fileInputStream 

相反的:

@FormDataParam("FileUpload") byte[] inputByteArray 

FormDataParam API,支持以下内容:

@POST 
@Consumes(MediaType.MULTIPART_FORM_DATA_TYPE) 
public String postForm(
     @DefaultValue("true") @FormDataParam("enabled") boolean enabled, 
     @FormDataParam("data") FileData bean, 
     @FormDataParam("file") InputStream file, 
     @FormDataParam("file") FormDataContentDisposition fileDisposition) { 
    ... 
} 

javadoc

当服务器消耗multipart/form-data请求包含一个可选命名正文部分“启用”的实体正文和两个必需的命名正文部分datafile

将可选部分enabled作为boolean值处理,如果零件不存在,则该值为真。

data部分作为JAXB bean进行处理,并包含有关以下部分的一些元数据。

部分file是上传的文件,将其作为InputStream进行处理。有关来自Content-Disposition标题的文件的其他信息可以通过参数fileDisposition访问。

+0

立即尝试..... brb –

+0

同样的错误...... –

+0

更新了我的答案。请看看它是否有用。 –