Hi Malcolm. Thanks for your response. Yeah, I'm aware that HttpServletRequest returns a Map<String, String[]> to accommodate multiple values with the same parameter name. In my case, I am just passing single values per parameter name, and Form.copyFrom(map) seems to handle all the Click Field types except for HiddenField. This is due to the overridden setValueObject() method defined in HiddenField. All of the other Click Field classes use the setValueObject() method defined in the abstract Field class, which seems to successfully handle copying the single value from the request map array.
I may be trying to do something beyond the original intent of Form.copyFrom(). As a work-around, I am thinking that perhaps I need to create a new Map based on the Request parameterMap, but with a single string value (rather than a String array), to feed to the copyFrom(map) method. Best regards, Nick. -----Original Message----- From: Malcolm Edgar [mailto:[email protected]] Sent: Monday, August 15, 2011 4:01 AM To: [email protected] Subject: Re: Form copyFrom issue with HiddenField using HttpServletRequest parameterMap If you are doing something like this please note the method: http://download.oracle.com/docs/cd/E17802_01/products/products/servlet/2.3/javadoc/javax/servlet/ServletRequest.html#getParameterMap() This will return an array of Strings rather than a single string in the returned Map, is this because you can submit multiple values with the name parameter name in HTTP. regards Malcolm Edgar On Mon, Aug 15, 2011 at 5:38 PM, Nicholas Dierauf <[email protected]> wrote: > Hello, > > > > I am trying to populate form fields from an HttpServletRequest > parameter map using Form.copyFrom(map). I am finding that all but > HiddenField(s) are getting populated. For the HiddenField, an > IllegalArguementException is getting thrown: > > > > java.lang.IllegalArgumentException: The value.getClass(): > '[Ljava.lang.String;' must be the same as the HiddenField valueClass: > 'java.lang.String' > > at > org.apache.click.control.HiddenField.setValueObject(HiddenField.java:2 > 43) > > at > org.apache.click.util.ContainerUtils.copyMapToFields(ContainerUtils.ja > va:1100) > > ... > > > > The HiddenField is different from other fields in that it uses a > 'valueObject' rather than a value String. I've tried setting the > valueObject in the HiddenField constructor to match the String array > that is used in the parameter map, but with no luck. I even tried > creating my own HiddenField class, but the Form class still creates > Click HiddenField(s) (for example for passing the form name), which throws > the exception during copyFrom. > > > > Does anybody have any suggestions/insights/work-arounds for this? I > would love to leverage this useful method for populating form fields > from a servlet request. I'm using Apache Click 2.3.0. > > > > Thank you, > > Nick. > > > >
