我的开发服务器我的glassfish网络应用程序报告它有一个本地的en_US。这导致日期以美国格式显示。我希望我们使用locale en_GB作为日期。
我的开发服务器是一个配置如下的虚拟框:
主机和VM都将en_GB作为默认操作系统区域设置返回
$ locale
LANG=en_GB.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=en_GB.UTF-8
然而,在我的Web应用程序中,当我将语言环境写入日志文件时,或者显示日期时,我可以看到语言环境设置为en_US。
Locale locale = Locale.getDefault();
log("Login.login_btn_action(): Default locale = " + locale.toString());
报告
Login.login_btn_action(): Default locale = en_US
为了解决这个问题,我尝试了以下(没有成功):
1)在Admin界面中,选择Domain并将语言环境设置为en_GB 我可以看到这个设置出现在第一行的domain.xml中:
2)将domain.xml中的其他jvm-options添加到'default-config'和'server-config'以设置user.language和user.country
<jvm-options>-Duser.language=en</jvm-options>
<jvm-options>-Duser.country=GB</jvm-options>
(当然每次我做出改变,我都会停下来开始Glassfish)
请您建议检查/更改其他选项/设置以使我的Java应用程序与本机服务器区域设置一起运行?
答案 0 :(得分:0)
根据Locale.getDefault()
的Javadoc,您可以使用Locale.setDefault(Locale)
更改默认语言环境。显然,在应用程序中对区域设置进行硬编码并不是很好,因此您可以考虑从配置文件或JVM选项中读取它。