JAVA语言环境:同一台机器上有两个不同的国家/地区名称

时间:2014-04-15 08:10:50

标签: java spring-mvc

在我的本地计算机上。在我的jsp我正在使用

Locale.getDefault();

它将India打印为国家/地区名称

在Spring控制器中我使用

public @ResponseBody HashMap searchOffer(Locale locale){
    locale.getDisplayCountry()
}

显示'United State`。为什么?两个不同的国家在同一台机器上..

我应该使用哪一个来阅读用户的语言环境?

1 个答案:

答案 0 :(得分:0)

虽然我不了解Spring Framework,但通常通过查看Locale HTTP标头来找出没有会话信息的每个请求Accept-Language对象的方法。这不是very good choice,因为它会误导人们认为他们会获得用户的下落。

如上面的链接所述,您可能希望通过存储首选项选项,查看请求IP(使用this question中的地理编码数据库)或其他内容,为用户提供覆盖首次猜测的方法。其中"存储偏好选项"是唯一需要"返回用户"的概念。最常见的选择是将Locale对象存储在用户的会话中。您可以阅读(特定于春季)选项列表in the manual

回答这个问题:静态方法Locale.getDefault()将报告JVM"回退" locale,通常从运行JVM的系统派生(或者@a_horse_with_no_name指出,可以用-Duser.locale覆盖。)