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?

 

Reply via email to