hmm, that's what I've been trying to avoid.

I went for a somewhat sicker route :-)

I extended the request processor, so it called a new method called
processTranslate() just
after the validator is called! This then does exactly the same as the
population of the form
beans, but calls a translation routine to convert from the locale
specific format to the system
format which is english (a la BigDecimal). This seems to work fine, but
means there is a separate
xml file to keep up to date, this looks like:

<?xml version="1.0"?>

<translations>
  <!-- Types -->
  <custom-type name="price" formatter="DecimalFormat"
application-pattern="####################0.##">
    <input-pattern value="####################0.##"/>
    <output-pattern value="####################0.00"/>
  </custom-type>
  <custom-type name="ordernumber" formatter="DecimalFormat"
application-pattern="####################0">
    <input-pattern value="#,###,###,##0"/>
    <output-pattern value="0,000,000,000"/>
  </custom-type>
  <custom-type name="quantity" formatter="DecimalFormat"
application-pattern="####################0.##">
    <pattern value="####################0.##"/>
  </custom-type>
  <custom-type name="integerquantity" formatter="DecimalFormat"
application-pattern="####################0">
    <pattern value="####################0"/>
  </custom-type>
  <custom-type name="percent" formatter="DecimalFormat"
application-pattern="####################0.##">
    <pattern value="####################0.##"/>
  </custom-type>
  <custom-type name="date" formatter="SimpleDateFormat"
application-pattern="dd/MM/yyyy">
    <pattern value="dd/MM/yyyy"/>
    <pattern value="dd.MM.yyyy" language="de" country="DE"/>
    <pattern value="dd.MM.yyyy" language="de" country="AT"/>
  </custom-type>
  <custom-type name="time" formatter="SimpleDateFormat"
application-pattern="HH:mm">
    <pattern value="HH:mm"/>
  </custom-type>
  <!-- Form beans -->
  <form-bean class="com.pcmsgroup.SomeFormBean">
    <property name="price.value" type="price"/>
    <property name="quantity.value" type="quantity"/>
  </form-bean>
</translations>

I've also extended the html:text and bean:write tags to translate back
the other way, which uses the same
translation utility. I gather that FormDef does most of this already,
but we can't use it unfortunately...

Does anyone think this code is useful generally?

Simon

The information contained in this e-mail is intended only for the person
or
entity to which it is addressed and may contain confidential and/or
privileged material. If You are not the intended recipient of this
e-mail,
the use of this information or any disclosure, copying or distribution
is
Prohibited and may be unlawful. If you received this in error, please
contact the sender and delete the material from any computer. The views
expressed in this e-mail may not necessarily be the views of The PCMS
Group
plc and should not be taken as authority to carry out any instruction
contained.
 

> -----Original Message-----
> From: Huw Richards [mailto:[EMAIL PROTECTED] 
> Sent: 06 December 2004 11:55
> To: Struts Users Mailing List
> Subject: RE: i18n input
> 
> 
> Hi
> 
> It was something along those lines. 
> 
> My business objects tend to have convert methods where I take 
> the strings of
> the value object (which have been created in the Action from 
> the form) and
> turn them into their correct types. I have a NumberUtil class 
> which I use
> for converting locale specific strings into BigDecimal. This 
> NumberUtil
> class has a static method which takes a String and a Locale 
> as parameters
> and returns a BigDecimal.
> 
> Huw
> 
> -----Original Message-----
> From: Simon Matic Langford [mailto:[EMAIL PROTECTED] 
> Sent: Monday, December 06, 2004 5:05 AM
> To: 'Struts Users Mailing List'
> Subject: RE: i18n input
> 
> 
> 
> ___________________________________________________________
> 
> *** WARNING ***
> 
> This email has been received from the internet. 
> Check any attachments for viruses before opening them. 
> ___________________________________________________________
> 
> 
> huw,
> 
> how did you handle this input on the server side? did you have some
> cunning scheme
> or just a lot of
> NumberFormat.getNumberInstance(request.getLocale()).parse(form
> Bean.getFi
> eld())?
> 
> thanks
> 
> simon
>  
> 
> > -----Original Message-----
> > From: Huw Richards [mailto:[EMAIL PROTECTED] 
> > Sent: 03 December 2004 23:05
> > To: Struts Users Mailing List
> > Subject: RE: i18n input
> > 
> > 
> > The one problem I had with i18n input was with European 
> > locales where "," is
> > used as the decimal separator. The number would be formatted 
> > with "," as the
> > decimal separator but as the input boxes are just text, the 
> > numeric keypad
> > which produces "," in excel when "." is pressed just produces 
> > "." in the
> > number box. I had to rely on an adapted javascript to mask 
> > the numbers on
> > field entry & exit.
> > 
> > -----Original Message-----
> > From: Jim Barrows [mailto:[EMAIL PROTECTED] 
> > Sent: Friday, December 03, 2004 11:00 AM
> > To: Struts Users Mailing List
> > Subject: RE: i18n input
> > 
> > 
> > 
> > ___________________________________________________________
> > 
> > *** WARNING ***
> > 
> > This email has been received from the internet. 
> > Check any attachments for viruses before opening them. 
> > ___________________________________________________________
> > 
> > 
> > 
> > 
> > > -----Original Message-----
> > > From: Simon Matic Langford [mailto:[EMAIL PROTECTED]
> > > Sent: Friday, December 03, 2004 8:51 AM
> > > To: 'Struts Users Mailing List'
> > > Subject: RE: i18n input
> > > 
> > > 
> > > yeah, I know I can do this, but this is a large system with 
> > around 200
> > > jsps 80 views
> > > and a number of controllers. doing the display is 
> > reasonably simple I
> > > know, but extremely
> > > tedious and prone to errors, I was hoping for a more 
> > elegant solution
> > > which also handles
> > > input...
> > 
> > I believe it does handle input as well... depending on the 
> > browser, which
> > java has no control over.  
> > 
> > > > 
> > > > Java comes with i18n built in.  You want the JSTL <fmt:blah 
> > > > for output and look at the way message resources are handled 
> > > > in struts, as well as read through the i18n documentation on 
> > > > the sun site.
> > > 
> > > 
> > > 
> > 
> ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > 
> > > 
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> > 
> > 
> > ___________________________________________________________ 
> > 
> > CONFIDENTIALITY NOTE 
> > 
> > This message may contain confidential and privileged information. 
> > If you think, for any reason, that this message may have been 
> > addressed to you in error, you must not disseminate, copy or 
> > take any action in reliance on it and we would ask you to notify us 
> > immediately by return email to "[EMAIL PROTECTED]". 
> > 
> http://www.oprig.com 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> ___________________________________________________________ 
> 
> CONFIDENTIALITY NOTE 
> 
> This message may contain confidential and privileged information. 
> If you think, for any reason, that this message may have been 
> addressed to you in error, you must not disseminate, copy or 
> take any action in reliance on it and we would ask you to notify us 
> immediately by return email to "[EMAIL PROTECTED]". 
> 
http://www.oprig.com 


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


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

Reply via email to