You can parse and convert currency amounts with these currency converters:
currency
The currency
converter translates a value into the currency pattern of the recognized locale. For example:
<dsp:valueof bean="PriceInfo.amount" converter="currency"/>
In this example, no locale is specified, so the converter first looks for a request parameter named locale
, which can be either a java.util.Locale
object or a String that names a locale. If this parameter cannot be found, the converter gets the locale from the RequestLocale
.
The following example explicitly specifies a locale:
<dsp:valueof locale="en_US" bean="PriceInfo.amount" converter="currency"/>
This example might display a value of $13.89
. Each locale provides a default setting that determines:
Currency symbol, when the symbol is part of ISO Latin-1 (ISO 8859-1)
Separator such as a comma or period
Format., such as extending the decimal to the tenths position
For more information on tailoring your site to an international audience, see the Internationalization chapter in the ATG Programming Guide.
euro and currencyConversion
If you need to display prices in more than one currency on your site, the euro
and currencyConversion
converters are especially useful. These
converters are child classes of the currency
converter. You can store prices in euros, and then use the currencyConversion
converter to automatically convert the prices to another currency. For example:
<p>Price in Euros: <dsp:valueof locale="en_UK" bean="PriceInfo.amountInEuros" converter="euro" symbol="&euro"/> <p>Price in British Pounds: <dsp:valueof locale="en_UK" bean="PriceInfo.amountInEuros" converter="currencyConversion"/>
In this example, the first dsp:valueof
tag displays the price in euros. The symbol
attribute is used to specify the HTML entity for the euro symbol because the ISO Latin-1 (ISO 8859-1) character set does not include this symbol. The locale
attribute is used to determine how to format the output. The second dsp:valueof
tag displays the price in British pounds, using the official exchange rate set by the European Union and published at http://europa.eu.int. (The exchange rate is stored in the resource file atg/droplet/ExchangeRates.properties
.)
If the locale indicates a country that does not use the euro (such as the United States), these converters return null, and the dsp:valueof
tag returns its default value. For example:
<dsp:valueof bean="priceInfo.amountInEuros" converter="currencyConversion">$5.00</dsp:valueof>
In this tag, the locale
attribute is not specified, so locale is determined as described above. If the locale is a country that uses the euro, the value of priceInfo.amountInEuros
is converted to the appropriate currency (using the official exchange rates) and displayed in the appropriate format for that locale. If the locale is not a country that uses the euro, the price is displayed as $5.00.
The currencyConversion
tool also includes a reverse
attribute that you can use to convert from a locale-specific European currency (for example, British pounds) into euros. Again, the conversion is performed using the official EU rate.
<dsp:valueof locale="en_UK_EURO" bean="priceInfo.amountInEuros" reverse="true"
converter="currencyConversion" symbol="€">no price</dsp:valueof>
In this example, the amount stored in priceInfo.amountInEuros
is converted to euros and the optional symbol
attribute is used to display the euro character. In addition, the en_UK_EURO
value tells it to format the euro value appropriately for the specified locale—in this case, United Kingdom.
See the Internationalization chapter of the ATG Programming Guide for more information about locales.