Hi Adam,
Setting param-value instrument.market.id=1 will work something like this (1) instrument = valueStack.getInstrument() - as your action class with the topmost object implementing this method it will result in yourActionClass.getInstrument() (2) if(instrument == null) { yourActionClass.setInstrument(new Instrument()); instrument = yourActionClass.getInstrument(); } - this will be done provided there exists no-argument public constructor for class Instument. (3) market = instrument.getMarket(); (4) if(market == null) { Instrument.setMarket(new Market()); market = instrument.getMarket(); } - again, this is so if there exists no-argument public constructor for class Market (5) market.setId(1) Setting type converter in xwork-conversion.properties like org.permacode.patternrepo.domain.Market=org.permacode.atomic.web.DomainObjec tTypeConverter tells S2 that "if you need to convert value of other type (typically String) to an object of Market class use the provided type converter to do the conversion". Hope this helps. Regards, Kedar -----Original Message----- From: Adam Hardy [mailto:[EMAIL PROTECTED] Sent: Sunday, February 24, 2008 8:42 PM To: Struts Users Mailing List Subject: Re: xwork-conversion.properties Hi Kedar, perhaps you could expand upon your statement. What I understand is that the conversion involves the creation of the object graph based on the incoming HTTP param-value pair (e.g. instrument.market.id=1) as follows: (1) id = new Long(1) (2) market = new Market() (3) market.setId(id) (4) instrument = new Instrument() (5) instrument.setMarket(market) In steps (2) and (4), my assumption is that OGNL will call my TypeConverter which I have registered in xwork-conversion.properties to handle those classes. Are you implying that OGNL will only delegate to the TypeConverter when dealing with the last name in the parameter string (in my case 'id' which is Long)? Regards Adam Kedar Choudhary on 24/02/08 06:10, wrote: > There is not type conversion to be done when setting value of > instrument.market.id. > S2 will call your type converter if you were setting value of > instrument.market. > > Regards > Kedar > > -----Original Message----- > From: Adam Hardy [mailto:[EMAIL PROTECTED] > Sent: Sunday, February 24, 2008 1:02 AM > To: Struts Users Mailing List > Subject: Re: xwork-conversion.properties > > Adam Hardy on 22/02/08 17:32, wrote: >> I wrote a TypeConverter and configured S2 with >> xwork-conversion.properties to use it so: >> >> > org.permacode.patternrepo.domain.Market=org.permacode.atomic.web.DomainObjec > tTypeConverter >> >> as per the wiki. >> >> However, from debugging it looks as though struts is completely ignoring >> the TypeConverter and instantiating my Market objects as it needs them >> from scratch, for instance with nested objects in my form: >> >> instrument.market.id=13 >> >> What am I doing wrong? I use the ParamsInterceptor. Should I be using a >> different interceptor? > > This issue is proving very difficult to solve and so far I haven't been able > to > work out from debugging xwork and ognl what exactly is going wrong. > > It appears to be just this action which ignores my TypeConverter. Other > actions > are working fine with it. They have no extra config - it is only set in the > global xworks-conversion.properties file. > > Has anyone else ever come across such a situation?