Hello,
I'm having an issue with RESTEasy 2.3.4 with using @Form/@FormParam
annotations to set values of a Map that uses UUIDs for its keys. My
classes basically look like this:
@Controller
@Path( "/test" )
public class MyController
{
@Consumes( MediaType.APPLICATION_FORM_URLENCODED )
@POST
public ModelAndView setAssignments( @Form final MyForm myForm )
throws URISyntaxException
{ ... }
}
public class MyForm
{
@Form( prefix = "myMap" )
private Map<String, Foo> myMap = Maps.newHashMap();
}
public class Foo
{
@FormParam( "bar" )
public void setBar( final String bar )
{ ... }
}
The request parameters that get submitted look like this:
myMap[75736572-3100-505f-dac0-0000000745b8].bar
myMap[b794c4a0-14b7-0130-c2da-20c9d04983db].bar
etc.
The Foo.bar properties never end up being set. Stepping through with a
debugger, the problem occurs in
AbstractCollectionFormInjector.findMatchingPrefixesWithNoneEmptyValues():
that method tries to find keys in the map that match a regex. In this
case, the regex is defined in MapFormInjector:
public MapFormInjector(Class collectionType, Class keyType, Class
valueType, String prefix, ResteasyProviderFactory factory)
{
super(collectionType, valueType, prefix, Pattern.compile("^" + prefix
+ "\\[([a-zA-Z_]+)\\]"), factory);
keyInjector = new StringParameterInjector(keyType, keyType, null,
Form.class, null, null, new Annotation[0], factory);
}
And only allows alpha characters and underscores, which is obviously why my
map isn't being populated. I'm working around this right now by mapping
temporary, alpha-only keys to the real ones and using those in my form then
replacing them after the form is submitted. Is there a way to get this
regex changed to be something a little more lenient? Really, is there any
reason to disallow anything other than maybe brackets?
If you want me to enter a JIRA issue for this, let me know.
Thanks,
John
------------------------------------------------------------------------------
Monitor your physical, virtual and cloud infrastructure from a single
web console. Get in-depth insight into apps, servers, databases, vmware,
SAP, cloud infrastructure, etc. Download 30-day Free Trial.
Pricing starts from $795 for 25 servers or applications!
http://p.sf.net/sfu/zoho_dev2dev_nov
_______________________________________________
Resteasy-users mailing list
Resteasy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/resteasy-users