2015-10-20 57 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

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