You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by Jeremy Quinn <je...@apache.org> on 2008/07/28 14:05:44 UTC
RFC: Setting Currency on FormattingDecimalConvertor
Hi All
Coming out of my work to add client-side datatype-validation to CForms
Fields, I am proposing to add a new method and configuration option to
o.a.c.forms.datatype.convertor.FormattingDecimalConvertor, to allow
the setting of a specific currency, when the 'currency' variant is used.
ATM, there is no option to set the currency, so the currency is
automatically selected by the locale of the user. (Something that
could loose eCommerce sites some money :)
With this change, you'd have two different ways to setup the currency :
In the CForms Model :
<fd:datatype base="decimal">
<fd:convertor variant="currency" currency="GBP"/>
</fd:datatype>
Or in Flow :
var model = form.getModel();
model.dieselprice = new Packages.java.math.BigDecimal("1000000");
form
.getChild
("dieselprice").getDatatype().getConvertor().setCurrency("GBP");
The number then gets displayed using that currency, but in the locale
of the user :
eg.
en_GB: £1,000,000.00
nl_NL: GBP 1.000.000,00
fr_FR: 1 000 000,00 GBP
de_CH: GBP 1'000'000,00
hi_IN: GBP १,०००,०००.००
etc.
(You wouldn't /believe/ how many ways there are of showing a number!!!)
As an aside ..... in the near future (I hope!) when the new validating
cocoon.forms.NumberField is working properly, the user will see the
field populated with the full formatted string for their locale. When
they click to edit, the content switches to an easier-to-edit format :
eg.
view: £1,000,000.00
edit: 1000000.00
The field validates as you type, giving you real-time feedback.
When you have finished editing, the field reverts to it's full-format
display mode.
Your feedback would be welcome.
regards Jeremy
NB. Don't get confused by the term 'convertor' ..... this is
converting between a Java Number Object and a locale formatted String,
it is not converting from one currency to another (!!).