Okay, I figured I would do some digging around the old WebWork lists and
I figured out the issue.
Struts doesn't support array creation due to an issue with size
determination. Kinda what I though earlier. So, I've changed it over to
use a List<Integer> and that works fine.
The docs are very misleading on this point. I'd be more than happy to
clean up the type conversion doc and also create an collection handling
doc to help folks out with this issue. Let me know if I can help out at all.
Thanks,
-bp
Brian Pontarelli wrote:
Okay, some more on this.
This is not a Guice issue. This might not be an issue at all. Since
the docs didn't really have any good array examples, I just made some
assumptions, which might actually be incorrect - still waiting for the
final verdict from a Struts committer. I removed the Guice code and
went through everything again and it does appear that this doesn't
work. Ognl appears to call the getter for the array, which returns
null, and then just bails because it can't set the value into null.
Is there anyway to handle creation of arrays from the parameters in
the form foo[0], foo[1], etc? Or do I need to write the additional
code for managing a list internally or using an indexed setter?
thx,
-bp
Brian Pontarelli wrote:
Yeah, it looks like it goes all the way through the Ognl stack and
out to the ObjectFactory. Not sure why this is happening since
supposedly it should handle arrays, collections, Maps, etc. I'm gonna
grab the Ognl code and see if I can track this puppy down. If anyone
has info, please send it my way.
thanks,
-bp
Bob Lee wrote:
Are you using the Guice Struts 2 plugin? I didn't realize Struts 2
would
delegate to the ObjectFactory to create an int[].
Bob
On 4/2/07, Brian Pontarelli <[EMAIL PROTECTED]> wrote:
I'm playing around with Guice as an ObjectFactory and I've run into an
issue. I've got an action that I want to handle an array of values
from
a form using the [] notation. My form looks something like:
<input type="text" name="numbers[0]"/>
<input type="text" name="numbers[1]"/>
...
My action is roughly:
public class Update extends ActionSupport {
private int[] numbers;
// getter and setter
}
What I've found is that when the ParametersInterceptor is called it
delegates to Ognl and rather than Ognl creating the array and doing
all
the type conversions it is passing control over to Guice and asking
Guice to instantiate an instance of int[], which of course fails. Is
this correct or am I missing something between Ognl, XWork and
Guice? Or
is Guice not playing nice and handing back control to Ognl or XWork
like
it is supposed to?
Thanks,
-bp
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]