我的Web应用程序具有默认语言环境,该语言环境是基于服务器所在的国家/地区的。但是,在系统上创建的作业可以基于另一个国家/地区,因此很容易拥有其他语言环境。在某个页面上,我暂时(在页面范围内)尝试使用JSTL的fmt:setLocale
标签将语言环境设置为显示的作业的语言环境,但无法正常工作。
我正在这样使用它,其中 currentLocale 是作业的语言环境代码(例如en_GB或en_HK)。
<fmt:setLocale value="${currentLocale}"/>
我甚至专门将其设置为上述语言环境代码之一:
<fmt:setLocale value="en_HK"/>
但是在使用fmt:formatNumber
函数时,货币设置不正确:
<fmt:formatNumber value="${dailyRate}" type="currency"/>
这使用默认的en_US语言环境,因此货币符号是美元,而不是上面示例中的 HKD !
但是,当我将语言环境的范围更改为“会话”时,它将起作用并使用正确的货币代码:
<fmt:setLocale value="en_HK" scope="session"/>
但是出于明显的原因,我不想覆盖会话的语言环境。有谁知道为什么会这样,或者是否有针对此问题的解决方法?我在Stack Overflow上看到了其他问题的评论,其中奇怪的人说setLocale
标签仅在将作用域设置为会话时才起作用,但是没有人解释为什么会这样。
仅供参考,这是我发现的一个相关问题,人们在这里遇到过类似的问题:JSTL formatDate ignoring locale
谢谢!