是否可以为整个struts webapp配置统一格式的日期格式?

时间:2014-04-15 07:59:46

标签: java struts2 internationalization locale actioncontext

在任何情况下,ID都会获得异常Could not parse date

日期格式有统一的公司标准 - 'dd/MM/yyyy'

有些计算机具有不同的系统区域设置。我正在为datepicker使用jQueryUI(它是小部件的标准,并且已经解决了css样式以匹配应用程序主题)。

一开始,我没有找到更好的解决方案,然后使用SimpleDateFormat对象手动将日期字符串转换为日期对象。现在我有转换器类,但仍需要配置具有java.util.Date属性的每个Action。

我正在使用XML配置,我确实尝试添加到struts.xml

<constant name="struts.date.format" value="dd/MM/yyyy" />

它没有用。

是否有任何可以强制所有网络应用程序使用单一日期格式而不使用区域设置只是输出和输入日期的统一格式?

或者我如何提取struts日期类型转换器所期望的日期格式,所以我可以使用js转换日期之前发送到服务器以匹配struts期望?

1 个答案:

答案 0 :(得分:0)

Struts2的设计根据客户端请求的区域设置而有所不同。

i18n interceptor是默认拦截器堆栈的成员。因此,它负责将请求的区域设置设置为操作上下文,从而覆盖默认设置。如果请求参数未请求语言环境,它还会将该语言环境存储到会话中以进一步检索它。

默认类型转换器使用操作上下文的语言环境,因此将操作上下文设置为操作上下文可能会覆盖默认语言环境设置,该设置可以通过struts.localei18n进行配置拦截器并没有改变这一点。

如果是这样,不需要其他操作,只需根据该语言环境将日期格式设置为全局资源属性。您还可以使用可能与i18n请求的区域设置一起使用的操作属性,这些区域设置由于order of processing localization resources而具有不同的格式。

如果您不需要用户切换语言环境的可能性,则应从堆栈中删除i18n拦截器。

如何使用操作上下文的区域设置格式化日期和数字:Formatting Dates and Numbers