Java 使用JSTL在jsp页面中显示货币代码(美元等)-取决于语言环境

Java 使用JSTL在jsp页面中显示货币代码(美元等)-取决于语言环境,java,jsp,jstl,Java,Jsp,Jstl,我想做什么 在jsp页面中使用JSTL会根据所使用的语言环境在值前面显示货币代码 USD 1,234.99 CAD 4,321.99 我正在做什么和得到什么 <fmt:setLocale value="${info.locale}" scope="session"/> <fmt:formatNumber value="${price}" type="currency"/> 我正在尝试这样做,它给了我正确的输出 <fmt:formatNumber patte

我想做什么

在jsp页面中使用JSTL会根据所使用的语言环境在值前面显示货币代码

USD 1,234.99

CAD 4,321.99
我正在做什么和得到什么

<fmt:setLocale value="${info.locale}" scope="session"/>

<fmt:formatNumber value="${price}" type="currency"/>
我正在尝试这样做,它给了我正确的输出

<fmt:formatNumber  pattern="USD #,###.##;USD -#,###.##" value="${value}" type="currency"/>

但对于这一点,我必须为所有语言环境手动执行

有没有一种方法可以不用手动使用JSTL实现这一点

任何帮助和指导都将不胜感激


感谢您的帮助和时间。

要显示货币代码而不是货币符号,请按以下方式更改您的jstl代码

<fmt:formatNumber  pattern="USD #,###.##;USD -#,###.##" value="${value}" type="currency" currencySymbol="USD"/>


formatNumber有一个currencyCode和一个currencySymbol属性:谢谢@JB Nizet,我以前尝试过像这样的属性“”,并且分别使用了每个属性,但它仍然显示货币(“$”)而不是USD/CAD,我认为通过使用这两个属性,我们可以让标记知道货币属于哪个区域,但它仍然显示符号这是因为区域规则告诉我们,在该区域,显示货币的首选方式是显示货币符号,而不是货币代码。如果您不喜欢,您可以简单地通过指定USD作为货币符号来欺骗它。再次感谢@JB Nizet,这是一个好主意,但是我不必为每个区域手动执行此操作吗?因此,您希望使用区域的货币,而不是与打印价格相关联的货币,对吗?我会创建自己的标签:
<fmt:formatNumber  pattern="USD #,###.##;USD -#,###.##" value="${value}" type="currency" currencySymbol="USD"/>