我想用信件显示日期(例如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
)。我怎么能改变这个?
答案 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)}"/>