You need to determine why contact.contactLead.income is being evaluated as $123. This is forcing the search for setIncome(String). Is the user entering this value? If so, you need to strip it of the "String" so it can be considered a BigDecimal.
On Sat, Dec 11, 2010 at 6:51 PM, Burton Rhodes <burtonrho...@gmail.com>wrote: > I know. I don't have a setIncome(String) method. But I do have > setIncome(BigDecimal) method , hence the type conversion. Normally the > class MyCurrencyCoverter will covert the String to BigDecimal, but > it's never called. I am wondering what I am doing wrong that the > conversion class is not called. > > On Saturday, December 11, 2010, <stanl...@gmail.com> wrote: > > Look at the bottom of your message and also the top. > > 'contact.contactLead.income' evaluated > > to '$123' and you do not have a method > > com.afs.entity.ContactLead.setIncome([Ljava.lang.String;)] > > > > Scott > > > > On Fri, Dec 10, 2010 at 2:53 PM, Burton Rhodes <burtonrho...@gmail.com > >wrote: > > > >> I am having issues trying to get a Type Converter to run when > >> converting a field that is a "sub-object" of the main model. For > >> example, I have a Contact class that contains a ContactLead class. I > >> have an Action class that saves a new Contact and ContactLead at the > >> same time. Originally, I set up my > >> ContactCreateAction-conversion.properties file to convert the > >> "contact.contactLead.income" field (three levels deep). However, > >> MyCurrencyConverter class never gets called. I then changed my Action > >> and Jsp pages to have seperate Contact and ContactLead objects and > >> changed the conversion.properties file to convert > >> "contactLead.income". In this case, MyCurrencyConverter is called and > >> everything works fine. > >> > >> Although everything is fine, shouldn't the conversion be recursive? > >> Is this supposed to work, and I'm doing something wrong? I have tried > >> it both ways several times to make sure I didn't just mess something > >> up, but each time I'm getting the same result. Any comments welcome. > >> > >> Below are code snippets only. > >> > >> *** DOES NOT WORK *** > >> ContactCreateAction-conversion.properties: > >> contact.contactLead.income=com.afs.web.converter.MyCurrencyConverter > >> > >> Jsp File: > >> <s:textfield name="contact.contactLead.income" > >> value="%{getText('format.money',{contact.contactLead.income != null ? > >> contact.contactLead.income :''})}" /> > >> > >> *** DOES WORK *** > >> ContactCreateAction-conversion.properties: > >> contactLead.income=com.afs.web.converter.MyCurrencyConverter > >> > >> Jsp File: > >> <s:textfield name="contactLead.income" > >> value="%{getText('format.money',{contactLead.income != null ? > >> contactLead.income :''})}" /> > >> > >> **** The Contact Class **** > >> // Most code ommitted > >> public class Contact implements Serializable { > >> > >> @Id > >> @GeneratedValue > >> @Column(name = "ContactId") > >> private Integer contactId; > >> > >> @OneToOne(cascade = { CascadeType.ALL }, fetch=FetchType.LAZY) > >> @JoinColumn(name="ContactLeadId") > >> private ContactLead contactLead; > >> > >> ....... More veriables and getters/setters below > >> } > >> > >> *** THE ERROR *** > >> Dec 10, 14:41:49 (CommonsLogger.java:56) > >> WARN : The first TextProvider in the ValueStack > >> (com.afs.web.action.contact.ContactCreateAction) could not locate the > >> message resource with key 'contact.contactLead.income' > >> Dec 10, 14:41:49 (CommonsLogger.java:56) > >> WARN : The default value expression 'contact.contactLead.income' was > >> evaluated and did not match a property. The literal value > >> 'contact.contactLead.income' will be used. > >> Dec 10, 14:41:49 (CommonsLogger.java:56) > >> WARN : The first TextProvider in the ValueStack > >> (com.afs.web.action.contact.ContactCreateAction) could not locate the > >> message resource with key 'contact.contactLead.nextStepDate' > >> Dec 10, 14:41:50 (CommonsLogger.java:56) > >> WARN : The default value expression 'contact.contactLead.nextStepDate' > >> was evaluated and did not match a property. The literal value > >> 'contact.contactLead.nextStepDate' will be used. > >> Dec 10, 14:41:55 (CommonsLogger.java:60) > >> WARN : Error setting expression 'contact.contactLead.income' with > >> value '[Ljava.lang.String;@1fbc2c7' > >> ognl.MethodFailedException: Method "setIncome" failed for object > >> com.afs.entity.contactl...@16e1c2c [java.lang.NoSuchMethodException: > >> com.afs.entity.ContactLead.setIncome([Ljava.lang.String;)] > >> at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1285) > >> at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1474) > >> at > >> > ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85) > >> at > >> ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162) > >> > --------------------------------------------------------------------- > >> 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 > >