Thanks! On the server-side that's great. I'll use:
input.getFormDataMap().get("propertyName");
Is there an analog on the client side? Looking at the
MultipartFormDataOutput version of getFormData(), it's a map of name to
OutputPart (rather than List<OutputPart>).
As to what I'm trying to do - I'm implementing the OASIS S-RAMP
specification, which has an Atom based API binding. The specification
stipulates the 'propertyNames' input as a list of values, passed via
multipart/form-data.
-Eric
On 01/10/2013 05:21 PM, Bill Burke wrote:
>
>
> On 1/10/2013 9:41 AM, Eric Wittmann wrote:
>> Greetings.
>>
>> I am trying to get a multi-value input part working in my resteasy
>> service. On the inbound side, I'm expecting a multipart/formdata post,
>> where an input part named "propertyName" may appear multiple times. I
>> need to read that in as a Collection of some sort. Some sample code
>> that may or may not be right:
>>
>> @POST
>> @Consumes(MediaType.MULTIPART_FORM_DATA)
>> @Produces(MediaType.APPLICATION_ATOM_XML_FEED)
>> public Feed queryFromPost(MultipartFormDataInput input) {
>> String query = input.getFormDataPart("query",
>> new GenericType<String>() { });
>> Set<String> propNames = input.getFormDataPart("propertyName",
>> new GenericType<Set<String>>() { });
>> return doQuery(query, propNames);
>> }
>>
>
> qyer is right, propNames is wrong.
>
> You'll have to do
>
> List<InputPart> propNames = input.getFormDataMap().get("propertyName");
>
>> I'm also using resteasy on the client-side. Not sure how to submit the
>> POST with multiple values. Currently I have:
>>
>> String url = ...
>> String query = ...
>> Set<String> propertyNames = ...
>> ClientRequest request = new ClientRequest(url);
>> MultipartFormDataOutput formData = new MultipartFormDataOutput();
>> formData.addFormData("query", query, MediaType.TEXT_PLAIN_TYPE);
>> formData.addFormData("propertyName", propertyNames,
>> MediaType.TEXT_PLAIN_TYPE);
>
> The above will try to marshal a Set<String> into TEXT_PLAIN, which will
> call Set.toString().
>
>> request.body(MediaType.MULTIPART_FORM_DATA_TYPE, formData);
>> ClientResponse<Feed> response = request.post(Feed.class);
>>
>> Clearly this isn't right. Any thoughts on how this should be done?
>>
>
> I'm not exactly sure what you're trying to do? Why not just create your
> own json or XML media type and send that? What are you using multipart?
>
------------------------------------------------------------------------------
Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and
much more. Get web development skills now with LearnDevNow -
350+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122812
_______________________________________________
Resteasy-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/resteasy-users