Struts 2 和 JDK 17 语言环境中的数字

问题描述 投票:0回答:1

使用 struts

6.3.0.1
和 jdk 8,下面生成
1, 2, 3,

     <s:iterator begin="1" end="3">
                <s:property value="top"/>,
     </s:iterator>

通过更改为 jdk 17 它会生成

۱, ۲, ۳,
(这些是
1, 2, 3,
的波斯数字)

我将

struts.locale
设置为
fa_IR

<constant name="struts.locale" value="fa_IR" />

该网站是多语言的,并且使用了

i18n
拦截器。

这可能是一个很好的功能,但该网站的构建方式是使用英文数字。无论如何,有什么办法可以让我无论语言环境如何都可以使用英文数字

我尝试通过

session.setAttribute(Config.FMT_LOCALE, new Locale("en", "US")); 
修复它,但没有运气

java internationalization struts2 locale java-17
1个回答
0
投票

要打印英文数字,您应该更改

Locale
。但您只能在
<s:iterator>
标签中打印它们。您应该知道如何从 JSP 中的
Locale
获取当前的
ActionContext

然后在更改之前将当前区域设置保存到变量中

<s:set var = "old_locale" value = "%{#context.locale}" />

<!-- then change a current locale -->

<s:set var = "%{#context.locale}" value = "%{new java.util.Locale("en", "US")" />

<!-- print numbers with a new locale -->

<s:iterator begin="1" end="3">
    <s:property value="top"/>,
</s:iterator>

<!-- then return a current locale back -->

<s:set var = "%{#context.locale}" value = "%{#old_locale}" />
© www.soinside.com 2019 - 2024. All rights reserved.