Java 是否可以为整个struts webapp配置统一的日期格式格式?
在任何情况下,我都会遇到异常Java 是否可以为整个struts webapp配置统一的日期格式格式?,java,struts2,internationalization,locale,actioncontext,Java,Struts2,Internationalization,Locale,Actioncontext,在任何情况下,我都会遇到异常无法分析日期 有统一的公司日期格式标准——'dd/MM/yyyy' 存在具有不同系统区域设置的计算机。我正在使用jQueryUI作为日期选择器(它是小部件的标准,并且已经固定了css样式以匹配应用程序主题) 起初,我没有找到更好的解决方案,而是使用SimpleDateFormatobject手动将日期字符串转换为日期对象。现在我有了converter类,但仍然需要配置每个具有java.util.Date属性的操作 我正在使用XML配置,并尝试添加到struts.XML
无法分析日期
有统一的公司日期格式标准——'dd/MM/yyyy'
存在具有不同系统区域设置的计算机。我正在使用jQueryUI作为日期选择器
(它是小部件的标准,并且已经固定了css样式以匹配应用程序主题)
起初,我没有找到更好的解决方案,而是使用SimpleDateFormat
object手动将日期字符串转换为日期对象。现在我有了converter类,但仍然需要配置每个具有java.util.Date
属性的操作
我正在使用XML配置,并尝试添加到struts.XML
:
<constant name="struts.date.format" value="dd/MM/yyyy" />
它不起作用
是否有任何东西可以强制所有web应用程序使用单一日期格式,而不使用区域设置—输出和输入日期的统一格式
或者如何提取Struts日期类型转换器所期望的日期格式,以便在发送到服务器之前使用JS转换日期,以符合Struts的期望?Struts2设计为根据客户端请求的区域设置进行不同的行为
是默认侦听器堆栈的成员。因此,它负责将请求的区域设置设置为操作上下文,覆盖默认设置。如果请求参数未请求区域设置,它还将该区域设置存储到会话中,以便进一步检索该区域设置
默认类型转换器使用操作上下文的区域设置,因此将区域设置设置为操作上下文可能会覆盖可通过struts配置的默认区域设置。区域设置和i18n
拦截器不会改变这一点
如果是这样,则无需执行其他操作,只需根据该区域设置将日期格式放入全局资源属性即可。您还可以使用动作属性,这些属性可以与i18n
请求的区域设置一起使用,该区域设置由于不同的语言而具有不同的格式
如果您不需要用户切换语言环境的可能性,那么应该从堆栈中删除i18n
拦截器
如何使用操作上下文的区域设置来设置日期和数字的格式:。jQuery使用不同的日期时间模式,然后使用Struts2。在jQuery中,我可以指定日期模式。关键是要同步产生jqueryui datetimepicker的内容和期望使用struts param拦截器的DateConverter的内容。我确实尝试将日期格式添加到全局资源中,但没有成功。根据日志记录,日期属性由com.opensymphony.xwork2.conversion.impl.DateConverter类处理,该类试图使用不同的格式化程序解析日期,但其中没有一个是基于全局资源中的数据格式生成的。您不仅需要添加它,还需要使用它。这个转换器要做的第一件事是从上下文中获取一个区域设置,然后基于该区域设置创建一个格式化程序/解析器,然后执行该工作。你所需要的只是将日期格式化为正确的区域设置。我已经这样做了。我没有找到配置日期格式的方法。所以我只是调试DateConverter,以找到DateConverter可以接受的日期格式版本,并在发送到服务器之前通过js进行转换。不,您没有。我在页面上放置了一个链接,您应该按照该链接在页面上设置日期和数字的格式以及示例。我花了很多时间与文档一起尝试使用struts来使用适当的语言环境。没用。struts文档中的示例代码通常只在示例中起作用。