Formate o valor monetário de acordo com a localidade e a moeda [duplicada]

Duplicata Possível:
formatar uma string para um formato de moeda no relatório jasper

Estou criando um documento de fatura usando o JasperReports que precisa ser localizado e oferecer suporte a várias moedas.

Por exemplo, quando o relatório está em francês, um valor de moeda deve ser exibido como1,00 € ou1,00 $ e quando em Inglês dos EUA deve ser€ 0.02 ou$ 1.00.

Crucialmente, a moeda da fatura é muitas vezes diferente da moeda do local e, em alguns casos, pode haver várias moedas usadas no mesmo documento.

Eu tentei usar a ferramenta de formatação incluída:<textField pattern="¤ #,##0.00">, no entanto isso não muda o formato de acordo com o local e eu não consigo encontrar uma maneira de mudar a moeda (só substitui o¤ com o símbolo de moeda local do relatório, tão errado em ambas as contas).

Eu dei uma olhada aqui:Como faço para formatar uma moeda para um local em Java mas ainda não descobri uma maneira de usar isso nos meus relatórios.

Obrigado!


Bem, eu finalmente descobri, mas desde que os mods bloquearam a pergunta, supostamente é uma duplicata - o que não é ... de qualquer maneira, aqui está uma resposta:

<variable name="CURRENCY" class="java.util.Currency">
     <variableExpression><![CDATA[Currency.getInstance($F{currencyCode})]]></variableExpression>
</variable>

<variable name="CURRENCY_FORMAT" class="java.text.NumberFormat">
    <variableExpression><![CDATA[
NumberFormat.getCurrencyInstance($P{REPORT_LOCALE});
((NumberFormat)value).setCurrency($V{CURRENCY})
]]></variableExpression>
</variable>

<textField>
     <reportElement x="179" y="58" width="89" height="15"/>
     <textFieldExpression><![CDATA[$V{CURRENCY_FORMAT}.format($F{revenueCents}/100)]]></textFieldExpression>
</textField>

questionAnswers(1)

yourAnswerToTheQuestion