在使用Struts2开发Web应用时,如果使用Date类型数据时,Struts2会调用Date转换器来处理页面的Date字符串到Date类型的转换,在阅读了Struts2的Code后,发现Date转换器使用的日期格式都不是中文日期格式,而我们的日期字符串格式为2008-05-26 12:00,当找不到对应的日期格式时,Struts2会用短日期格式来处理(yy-MM-dd),这时如果我们需要长日期格式的数据,在日期转换后是拿不到准确数据的。 (注意如果使用Window 和 服务器Linux上也许会有不同,一定要注意)
解决办法如下:
<s:textfield name="model.startDate">
<s:param name="value">
<s:date name="model.startDate"/>
</s:param>
</s:textfield>
也可以
<input type="text" name="person.birthday" value="<s:date name="person.birthday" format="yyyy-MM-dd" />" />
(注意好像默认是使用 yyyy-MM-dd 格式,如果不配置struts.properties 则 format里 为 yyyy/MM/dd, yyyyMMdd 等均不支持)
总之借助于 <s:date> 来对日期格式化输出
struts.properties 中设置 struts.date.format=yyyy-MM-dd也只能控制到<s:date>标签