2015-10-20 2 views
0

Вот мой Аякс вызов:латентный Джерси - Исключение получения параметров

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) {} 

Здесь ошибка я получаю

Вот StackTrace :

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 у:

@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 тело органа запроса, которое содержит одну дополнительную именованную часть тела «включено» и две требуемые именованные части тела data и file.

Необязательная часть enabled обрабатывается как значение boolean, если эта часть отсутствует, значение будет истинным.

Часть data обрабатывается как компонент JAXB и содержит некоторые метаданные о следующей части.

Часть file - файл, который загружен, обрабатывается как InputStream. Дополнительную информацию о файле из заголовка Content-Disposition можно получить по параметру fileDisposition.

+0

Попытка это прямо сейчас ..... brb –

+0

такая же ошибка ...... –

+0

Обновлен мой ответ. Пожалуйста, посмотрите, полезно ли это. –

Смежные вопросы