1

我想用字母显示日期(例如,2005 年 9 月 25 日星期六)。使用 Struts 我必须像这样格式化它:<s:date name="myDate" format="EEEE, dd MMMM"/>.

但是我想用另一种语言显示日期,所以我必须使用struts2本地化。我知道将它用于各种标签(例如key="global.name"),但我如何使用它来显示日期?我想Sambata, 25 Septembrie 2005用罗马尼亚语显示。

UPDATE1:一种方法是将默认语言环境设置为ro_Roin struts.xml

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

这样,当 Struts 发现<s:date name="myDate" format="EEEE, dd MMMM"/>它必须以默认的语言环境显示日期时,它会自动知道。也许还有其他选择,但这对我现在有用,我不必添加属性文件。

不过,我还有一个问题:我无法将日期大写(例如,默认情况下我得到sambata, 25 septembrie 2005的不是Sambata, 25 Septembrie 2005)。我怎样才能改变这个?

4

2 回答 2

2

我可以看到日期标签接受 i18n 属性(默认情况下将使用当前语言环境)。您可以轻松地覆盖它

<s:date name="myDate" i18n="ro_RO" format="EEEE, dd MMMM"/>

但我建议您阅读有关为您的应用程序设置正确的默认语言环境或在调用此 URL 时设置 request_locale 参数的信息。更改(和明确设置)每个 struts 标签上的语言环境只是自找麻烦。

于 2013-09-15T16:14:33.867 回答
1

您必须使用i18n拦截器将当前语言环境设置为罗马尼亚语。或者在行动或拦截器中手动执行

ActionContext.getContext().setLocale(new Locale('ro'));

或在 JSP 中使用 OGNL

<s:set value="%{@com.opensymphony.xwork2.ActionContext@getContext().setLocale(new java.util.Locale('ro'))}"/>
<s:date name="myDate" format="EEEE, dd MMMM"/>

注意:struts.ognl.allowStaticMethodAccess应该是true上面的工作。

或在 JSP 中使用纯 OGNL

<s:property value="%{new java.text.SimpleDateFormat('EEEE, dd MMMM', new java.util.Locale('ro')).format(myDate)}"/>
于 2013-09-15T17:04:20.907 回答