使用Struts显示带有外语字母的日期

时间:2013-09-15 15:39:08

标签: java jsp struts2 localization date-format

我想用信件显示日期(例如2005年9月25日星期六)。使用Struts,我必须将其格式化为:<s:date name="myDate" format="EEEE, dd MMMM"/>

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

UPDATE1 :一种方法是将ro_Ro中的默认语言环境设置为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)。我怎么能改变这个?

2 个答案:

答案 0 :(得分:2)

我可以看到date tag接受i18n属性(默认情况下将使用当前的语言环境)。您可以使用

轻松覆盖此内容
<s:date name="myDate" i18n="ro_RO" format="EEEE, dd MMMM"/>

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

答案 1 :(得分: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)}"/>