I bet it has something to do with a null not being assignable to an int.
Chris


 


 

-----Original Message-----
From: Richard Sayre <richardsa...@gmail.com>
To: Struts Users Mailing List <user@struts.apache.org>
Sent: Mon, 11 May 2009 11:44 am
Subject: Re: Converter trying to set String on int field










After some further investigation I found that any array type that has
no values from the form on submit will call setXXX(String).

I checked the source of
com.opensymphony.xwork2.util.XWorkBasicConverter and this is the first
thing it does:

if (value == null || toType.isAssignableFrom(value.getClass())) {
            // no need to convert at all, right?
            return value;
        }

So I'm still unclear as to why setXXX(String) is called.  I even used
a custom converter, and I am getting the same results.  When I return
null from my converter setXXX(String) is called.

If anyone has any suggestions on how to handle this it would be
greatly appreciated

Thanks
Rich


On Mon, May 11, 2009 at 11:10 AM, Richard Sayre <richardsa...@gmail.com> wrote:
> I have a bunch of check boxes called userId. In my action I have int
> userId[] and setUserId(int[] ids)
>
> When I select a checkbox the conversion works normally. ?When I dont
> check any boxes on the form and submit, I get the following:
>
> 2009-05-11 10:54:28,606 [http-8080-6] DEBUG []: - Property: userId
> 2009-05-11 10:54:28,606 [http-8080-6] DEBUG []: - Class: com.abc.UsersAction
> 2009-05-11 10:54:28,606 [http-8080-6] DEBUG []: - converter is null
> for property userId. Mapping size: 4
> 2009-05-11 10:54:28,606 [http-8080-6] DEBUG []: - field-level type
> converter for property [userId] = none found
> 2009-05-11 10:54:28,606 [http-8080-6] DEBUG []: - global-level type
> converter for property [userId] = none found
> 2009-05-11 10:54:28,606 [http-8080-6] DEBUG []: - falling back to
> default type converter
> [com.opensymphony.xwork2.util.xworkbasicconver...@82fba9]
> 2009-05-11 10:54:28,606 [http-8080-6] DEBUG []: - Property: userId
> 2009-05-11 10:54:28,606 [http-8080-6] DEBUG []: - Class: com.abc.UsersAction
> 2009-05-11 10:54:28,606 [http-8080-6] DEBUG []: - converter is null
> for property userId. Mapping size: 4
> 2009-05-11 10:54:28,606 [http-8080-6] DEBUG []: - field-level type
> converter for property [userId] = none found
> 2009-05-11 10:54:28,606 [http-8080-6] DEBUG []: - global-level type
> converter for property [userId] = none found
> 2009-05-11 10:54:28,606 [http-8080-6] DEBUG []: - falling back to
> default type converter
> [com.opensymphony.xwork2.util.xworkbasicconver...@82fba9]
> 2009-05-11 10:54:28,606 [http-8080-6] DEBUG []: - Error setting value
> ognl.MethodFailedException: Method "setUserId" failed for object
> com.abc.usersact...@1db2215 [java.lang.NoSuchMethodException:
> setUserId(java.lang.String)]
>
> For some reason when no ids are selected it is trying to set the value
> as a String.
>
> 1) Is this normal behavior?
> 2) Is there a way to work around it?
>
> Thank you,
>
> Rich
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org



 

Reply via email to