web服务器tomcat5.5,jdk6使用的框架 struts2.06 ,spring2,velocity1.5在windows和freebsd、ubuntu8上都执行正常,当放到centos5上时却显示明文,tomcat和jdk的版本都一样。 |
struts.velocity.toolboxlocation=/WEB-INF/classes/velocity-toolbox.xml velocity-toolbox.xml文件中包含 <tool> <key>DATETOOL</key> <scope>application</scope> <class>org.apache.velocity.tools.generic.DateTool</class> </tool> 正常的日期 显示:2009/06/21 不正常的日期 显示:$DATETOOL.format("yyyy/MM/dd hh:mm",$!{adddate}) 原因查找,怎么会这样呢,先在页面显示 $!{adddate},结果正常,显示2009-06-01 01:02:03:01 org.apache.velocity.tools.generic.DateTool 这个类是velocity带的,应该没什么问题; 没办法,只好重写了 datetool类,然后跟踪,发现虽然format是格式化日期,但我们在页面中调用的$!{adddate}其实是作为字符串执行的,程序先调用 todate方法转化字符串为日期,转化会与系统的local,而我们以前的服务器都是zh-CN,新服务器为en-us,所以被转化为null,结果就显示了明文。 解决办法有两个: 一、修改系统的local; 二、修改程序的代码,不依赖系统的local,直接指定为zh-cn; |