I was taking a look at bean utils source and could see
myself how this is done. Then i understood that
acutally you use the

value instanceof SOMETHING

However, the BeanUtilsBean class is quite complex and
i didn't have the patience (and the brains) to try to
understand it.

Anyway, it seems to me that when the "value" goes to
the convert method it already has a defined data type
(that's way the instanceof). But can anyone tell me
how exactly is the flux of data?? When does exactly my
"value" assumes the destination type???



 --- Leandro Melo <[EMAIL PROTECTED]>
escreveu: 
>  --- Jim Barrows <[EMAIL PROTECTED]> escreveu: 
> > 
> > 
> > > -----Original Message-----
> > > From: Leandro Melo
> > [mailto:[EMAIL PROTECTED]
> > > Sent: Wednesday, September 08, 2004 4:28 PM
> > > To: Struts Users Mailing List
> > > Subject: Re: ActionForm data type X BeanUtils ->
> > using Dates
> > > 
> > > 
> > > I got one doubt in your code when used in a
> > situation
> > > that i mentioned (transforming data from action
> > form
> > > to dto).
> > > When date comes from action form, they usually
> > come in
> > > Strings, but in your method you verify 
> > > 
> > > value instanceof Date...
> > 
> > Bi-directional conversion.  Look at what he does
> if
> > it is a date.  This isn't just for ActionForm to
> > DTO, it's for any other time you have to convert a
> > string to a date using BeanUtils.
> 
> 
> Yes Jim, "to convert a String to a Date", so if i
> use 
> 
> value instanceof Date
> 
> i will allways fail!!! Because value is a String,
> you
> just said that.
> 
> 
> 
> 
> 
> 
> > > This will never happen, as the value comes in
> > String.
> > > 
> > > Am i saying something stupid???
> > 
> > Not really... just not being generic enough for
> the
> > solution.
> > 
> > > 
> > > I'm not saying your code is wrong, but not
> > appropriate
> > > for the situation in question.
> > > 
> > > Am i right?
> > 
> > Sorta :)
> > 
> > > 
> > > 
> > >  --- Bryce Fischer <[EMAIL PROTECTED]>
> > > escreveu: 
> > > > The custom converter is done independently of
> > the
> > > > action, form or DTO.
> > > > 
> > > > First step is to implement the interface 
> > > > org.apache.commons.beanutils.Converter.
> > > > 
> > > > Keep in mind that the converter you are
> writing
> > uses
> > > > the appropriate 
> > > > converter for the original class. So, if you
> > were
> > > > converting from a 
> > > > String to a Date, you would create a String
> > > > converter. And vice versa, 
> > > > if you were converting from a Date to a String
> > you
> > > > would create a Date 
> > > > converter. Example below
> > > > 
> > > > Then, to override the standard converters, you
> > call:
> > > > ConvertUtils.register(<Your converter class>,
> > <class
> > > > to use converter 
> > > > on>.class);
> > > > 
> > > > First parameter is your new converter, and the
> > > > second is the class its 
> > > > used for. I call this in a static initializer
> of
> > a
> > > > utility class, you 
> > > > just need to make sure its called before any
> > > > validations occur, and it 
> > > > only needs to be done once.
> > > > 
> > > > Since we are interested in customizing
> > conversions
> > > > from String to Date, 
> > > > I override the String converter:
> > > > 
> > > > public class StringConverter implements
> > Converter{
> > > >    public Object convert(Class type, Object
> > value) {
> > > >       Object returnObj = null;
> > > >       if (value != null) {
> > > >          if (value instanceof Date){
> > > >             returnObj =
> > > > dateFormatter.format((Date)value);
> > > >          } else if (value instanceof
> > BigDecimal){
> > > >             returnObj =
> > > > decimalFormatter.format((BigDecimal)value);
> > > >          } else {
> > > >             returnObj = value.toString();
> > > >          }
> > > >       }
> > > >      
> > > >       return returnObj;
> > > >    }
> > > > }
> > > > 
> > > > I've left out some properties, their getters
> and
> > > > setters, but I think 
> > > > you get the gist of what I'm doing. Now, I
> > register
> > > > this converter as such:
> > > > 
> > > > ConvertUtils.register(new StringConverter(),
> > > > String.class);
> > > > 
> > > > I actually have a utility class, where the
> > register
> > > > is done in the 
> > > > static initializer. I suppose another way
> would
> > be
> > > > to use a servlet that 
> > > > loads prior to Struts.. Or if your Actions
> have
> > a
> > > > base class, etc...
> > > > 
> > > > Maybe there's a more elegant way of doing
> that.
> > This
> > > > is what I've come 
> > > > up with. If someone has a better way, post
> > please,
> > > > I'm always looking 
> > > > for more elegant ways of accomplishing stuff
> > like
> > > > this.
> > > > 
> > > > Jason King wrote:
> > > > 
> > > > > Could you point us at some code that does
> > this? 
> > > > Do you customize in 
> > > > > the action, the form or the DTO? 
> > > > 
> > > > 
> > > >
> > >
> >
>
---------------------------------------------------------------------
> > > > To unsubscribe, e-mail:
> > > > [EMAIL PROTECTED]
> > > > For additional commands, e-mail:
> > > > [EMAIL PROTECTED]
> > > > 
> > > >  
> > > 
> > > 
> > >   
> > >   
> > >           
> > >
> >
>
_______________________________________________________
> > > Yahoo! Acesso Grátis - navegue de graça com
> > conexão de qualidade! 
> > > http://br.acesso.yahoo.com/
> > > 
> > >
> >
>
---------------------------------------------------------------------
> > > To unsubscribe, e-mail:
> > [EMAIL PROTECTED]
> > > For additional commands, e-mail:
> > [EMAIL PROTECTED]
> 
=== message truncated === 


        
        
                
_______________________________________________________
Yahoo! Acesso Grátis - navegue de graça com conexão de qualidade! 
http://br.acesso.yahoo.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to