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]