在我的本地计算机上。在我的jsp我正在使用
Locale.getDefault();
它将India
打印为国家/地区名称
在Spring控制器中我使用
public @ResponseBody HashMap searchOffer(Locale locale){
locale.getDisplayCountry()
}
显示'United State`。为什么?两个不同的国家在同一台机器上..
我应该使用哪一个来阅读用户的语言环境?
答案 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
覆盖。)