मैं एक जर्सी सेवाओं और इकाई परीक्षण (जर्सी क्लाइंट का उपयोग) है कि 3 FormDataParams साथ ठीक काम किया है:जावा जर्सी बाकी सेवा करने के लिए एक ही नाम के साथ कई FormDataParams पोस्ट करना
@Path("myService")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@POST
@Produces(MediaType.TEXT_PLAIN)
public Response doService(@FormDataParam("p1") String v1,
@FormDataParam("p2") InputStream v2,
@FormDataParam("p3") InputStream v3) throws IOException {
परीक्षण कोड इस तरह है:
FormDataMultiPart fdmp = new FormDataMultiPart();
fdmp.field("p1", v1);
fdmp.field("p2", v2);
fdmp.field("p3", v3);
ClientResponse response = service.path("myService").type(MediaType.MULTIPART_FORM_DATA).accept(MediaType.TEXT_PLAIN).post(ClientResponse.class, fdmp);
समस्या तब होती है जब मैं इसे पी 1 फ़ील्ड के लिए एकाधिक मानों का समर्थन करने के लिए बदलता हूं। मैं
@FormDataParam("p1") String v1,
से
@FormDataParam("p1") List<String> v1,
को सेवा हस्ताक्षर हिस्सा बदल लेकिन फिर मैं
04-Apr-2012 18:56:59 com.sun.grizzly.http.servlet.ServletAdapter doService
SEVERE: service exception:
java.lang.IllegalArgumentException: wrong number of arguments
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:172)
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:265)
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:133)
at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:83)
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:133)
at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:71)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:996)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:947)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:938)
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:399)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:478)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:663)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
मिल सवाल यह है कि मैं काम कर कोड मैं ऊपर तैनात एक से अधिक मान अनुमति देने के लिए बदल सकता है "पी 1" पैरामीटर के लिए।
प्रश्न क्या है? –
@Alex मैंने स्पष्ट रूप से अंत में यह कहा है। – Alb
क्या आपने 'जेनेरिक एंटीटी' में अपनी 'सूची' लपेटने का प्रयास किया था? –