Java 基于HTTP请求getLocale引发IllegalArgumentException的货币

Java 基于HTTP请求getLocale引发IllegalArgumentException的货币,java,servlets,illegalargumentexception,Java,Servlets,Illegalargumentexception,我正在尝试基于区域设置获取货币符号,servlet中的货币代码 我尝试执行以下操作,但它抛出了IllegalArgumentException Currency.getInstance(request.getlocale()) 区域设置的语言为“en”,但国家/地区值为空 如何获取区域设置的货币符号、货币代码?对于没有国家/地区的区域设置,要求货币是没有意义的 你问的“英语”是什么货币?这可能是美元(美国)、澳元(澳大利亚)、UKP(英国)、欧元(爱尔兰)、加元(加拿大)等。换句话说,在不知道

我正在尝试基于区域设置获取货币符号,servlet中的货币代码

我尝试执行以下操作,但它抛出了
IllegalArgumentException

Currency.getInstance(request.getlocale())
区域设置的语言为“en”,但国家/地区值为空


如何获取区域设置的货币符号、货币代码?

对于没有国家/地区的区域设置,要求货币是没有意义的

你问的“英语”是什么货币?这可能是美元(美国)、澳元(澳大利亚)、UKP(英国)、欧元(爱尔兰)、加元(加拿大)等。换句话说,在不知道国家的情况下,您无法选择货币,事实上,货币只取决于国家,而不取决于语言。国家有一种官方货币,但可以有多种语言,如加拿大有地区
fr\u-CA
en\u-CA

另外,Javadoc(我的重点)中也非常清楚地说明了这一点:

返回给定区域设置所在国家/地区的货币实例。忽略区域设置的语言和变体组件。随着各国货币的变化,结果可能会随着时间的推移而变化。例如,对于欧洲货币联盟的原始成员国,该方法将返回2001年12月31日之前的旧国家货币,并返回各自国家当地时间2002年1月1日起的欧元

对于没有货币的地区,例如南极洲,该方法返回null

参数:

locale—需要其国家/地区货币实例的区域设置

返回:

给定区域设置所在国家/地区的货币实例,或null 抛出:

NullPointerException-如果区域设置为null

IllegalArgumentException-如果给定区域设置的国家/地区不是受支持的ISO 3166国家/地区代码。


请发布一段代码片段。
public static Currency getInstance​(Locale locale)