It is also happening in a Date field I have. If no dates are entered in the text box then I get the same error. If I provide a date then the conversion works.
I am currently moving through the XWork and OGNL source to see what is causing this. On Mon, May 11, 2009 at 1:48 PM, <musom...@aol.com> wrote: > > 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 > > > > > > --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org