You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by "Sam.Wang" <Bi...@ge.com> on 2009/10/14 05:15:55 UTC
how to map parameters to hashtable or hashmap in REST.
Hello all:
I have a question about parameter mapping.
It works fine when I mapped parameters to customized object. but if I
changed the Hashtable or Hashmap, it doesn't work at all.
I searched in google and most results tell me it doesn't support Map type in
JAXB, but I have some special reason to do that in using map way.
So could everyone can give some suggestions or advices about that? thanks:)
@POST
@Path("/")
public Response addApple(@FormParam("") Apple apple) throws Exception;
I hope it can work when I changed the Apple to Hashtable.
@POST
@Path("/")
public Response addApple(@FormParam("") Hashtable<String,String> apple)
throws Exception;
passed the hashtable object is null.
--
View this message in context: http://www.nabble.com/how-to-map-parameters-to-hashtable-or-hashmap-in-REST.-tp25884722p25884722.html
Sent from the cxf-user mailing list archive at Nabble.com.
Re: how to map parameters to hashtable or hashmap in REST.
Posted by "Sam.Wang" <Bi...@ge.com>.
Hi Sergey:
Thanks for your reply!
Sorry for the short holiday. I tried your method last week, but I can't get
expected result.
Following code is the first update, FYI.
@POST
@Consumes("application/www-url-form-encoded")
@Path("/")
public Response addApple(MultivaluedMap<String,String> apple) throws
Exception;
But the eclipse console output a message when I ran it.
2009-10-19 09:17:12 .No operation matching request path / is found,
ContentType : application/x-www-form-urlencoded;charset=utf-8, Accept :
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,.
I found the issue is happened the ContentType, so I change the ContentType
as same as the request.
@POST
@Consumes("application/x-www-form-urlencoded")
@Path("/")
public Response addApple(MultivaluedMap<String,String> apple) throws
Exception;
And then it still doesn't work whatever I changed or removed the @Consumes
label, the Exception is javax.xml.bind.MarshalException.
My CXF version is 2.2.3, thanks.
Sergey Beryozkin wrote:
>
> Hi
>
> sorry for a late response
>
> when you do
>
> @FormParam("") Apple apple
>
> then what it means is that all the application/www-url-form-encoded
> sequence is injected (name/value pairs) into an Apple instance.
>
> So if you'd like to have them all injected into a map then simply do
>
> @Path("/")
> @Consumes("application/www-url-form-encoded")
> public Response addApple(MultivaluedMap<String,String> apple) {}
>
> MultivaluedMap should really be used in such cases, as it can hold
> multiple values for a given field key/name; @FormParam can be handy when
> accessing an individual form field value, though @FormParam("") can indeed
> be used to collect them all and inject into the bean.
>
> cheers, Sergey
>
>
> Sam.Wang wrote:
>>
>> Hello all:
>>
>> I have a question about parameter mapping.
>> It works fine when I mapped parameters to customized object. but if I
>> changed the Hashtable or Hashmap, it doesn't work at all.
>> I searched in google and most results tell me it doesn't support Map type
>> in JAXB, but I have some special reason to do that in using map way.
>> So could everyone can give some suggestions or advices about that?
>> thanks:)
>>
>> @POST
>> @Path("/")
>> public Response addApple(@FormParam("") Apple apple) throws Exception;
>>
>> I hope it can work when I changed the Apple to Hashtable.
>>
>> @POST
>> @Path("/")
>> public Response addApple(@FormParam("") Hashtable<String,String> apple)
>> throws Exception;
>> passed the hashtable object is null.
>>
>
>
--
View this message in context: http://www.nabble.com/how-to-map-parameters-to-hashtable-or-hashmap-in-REST.-tp25884722p25952276.html
Sent from the cxf-user mailing list archive at Nabble.com.
Re: how to map parameters to hashtable or hashmap in REST.
Posted by Sergey Beryozkin <se...@iona.com>.
Hi
sorry for a late response
when you do
@FormParam("") Apple apple
then what it means is that all the application/www-url-form-encoded sequence
is injected (name/value pairs) into an Apple instance.
So if you'd like to have them all injected into a map then simply do
@Path("/")
@Consumes("application/www-url-form-encoded")
public Response addApple(MultivaluedMap<String,String> apple) {}
MultivaluedMap should really be used in such cases, as it can hold multiple
values for a given field key/name; @FormParam can be handy when accessing an
individual form field value, though @FormParam("") can indeed be used to
collect them all and inject into the bean.
cheers, Sergey
Sam.Wang wrote:
>
> Hello all:
>
> I have a question about parameter mapping.
> It works fine when I mapped parameters to customized object. but if I
> changed the Hashtable or Hashmap, it doesn't work at all.
> I searched in google and most results tell me it doesn't support Map type
> in JAXB, but I have some special reason to do that in using map way.
> So could everyone can give some suggestions or advices about that?
> thanks:)
>
> @POST
> @Path("/")
> public Response addApple(@FormParam("") Apple apple) throws Exception;
>
> I hope it can work when I changed the Apple to Hashtable.
>
> @POST
> @Path("/")
> public Response addApple(@FormParam("") Hashtable<String,String> apple)
> throws Exception;
> passed the hashtable object is null.
>
--
View this message in context: http://www.nabble.com/how-to-map-parameters-to-hashtable-or-hashmap-in-REST.-tp25884722p25916797.html
Sent from the cxf-user mailing list archive at Nabble.com.