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

Struts 2 and JDK 17 numbers in locale

提问人:Alireza Fattahi 提问时间:10/7/2023 最后编辑:Roman CAlireza Fattahi 更新时间:10/9/2023 访问量:62

问:

使用 struts 和 jdk 8,下面生成6.3.0.11, 2, 3,

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

通过更改为 jdk 17 它生成 ( 这些是波斯语数字۱, ۲, ۳,1, 2, 3,)

我将struts.localefa_IR

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

该网站是多语言的,并且使用拦截器。i18n

这可能是一个不错的功能,但该网站的构建方式与英文数字一起使用。无论如何,无论语言环境如何,我都可以拥有英语数字吗?

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

java 国际化 struts2 struts java-17

评论


答:

1赞 Roman C 10/9/2023 #1

要打印英文数字,您应该更改 .但是您只在标签中打印它们。您应该知道如何从 JSP 中的 ActionContext 获取当前 LocaleLocale<s:iterator>

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

<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}" />