如何使用没有货币符号或美元符号的货币格式

时间:2017-10-18 05:43:44

标签: java freemarker

我有:

 ${amount?string.currency} 

格式化我的BigDecimal很好,唯一的是它包含我不想要的货币符号(美元符号)。如何在不使用string["0.##"]

明确指定数字格式的情况下禁用此功能

2 个答案:

答案 0 :(得分:2)

目前(2.3.27)?string.currency始终表示Java提供的默认货币格式。因此,您可以定义自定义格式,而不是更改它,而是像amount?string.@currency一样使用它(其中currency只是您为格式指定的名称)。

自定义格式在Java中定义。从手册(http://freemarker.org/docs/pgui_config_custom_formats.html#pgui_config_custom_formats_ex_alias):

// Where you initalize the application-wide Configuration singleton:
Configuration cfg = ...;

Map<String, TemplateNumberFormatFactory> customNumberFormats = new HashMap<>();
customNumberFormats.put("price",
        new AliasTemplateNumberFormatFactory(",000.00"));
customNumberFormats.put("weight",
        new AliasTemplateNumberFormatFactory("0.##;; roundingMode=halfUp"));
cfg.setCustomNumberFormats(customNumberFormats);

然后在模板中:

${product.price?string.@price}
${product.weight?string.@weight}

答案 1 :(得分:1)

如果您只想使用格式

${amount?string["0.##"]}

或设置number_format

<#setting number_format="0.##">

查看所有freemarker formats options