代码之家  ›  专栏  ›  技术社区  ›  Sri

基于HTTP请求的货币GetLocale引发IllegalArgumentException

  •  -2
  • Sri  · 技术社区  · 8 年前

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

    我试着做下面的事,但它是扔 IllegalArgumentException .

    Currency.getInstance(request.getlocale())
    

    区域设置的语言为“en”,但国家/地区值为空。

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

    1 回复  |  直到 8 年前
        1
  •  1
  •   Jim Garrison    8 年前

    在没有国家的地区要求货币是没有意义的。

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

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

    public static Currency getInstance​(Locale locale)
    

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

    对于没有货币的地区(如南极洲),该方法返回空值。

    参数:

    区域设置-其区域设置 国家 需要货币实例

    返回:

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

    NullPointerException-如果区域设置为空

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