struts2日期转换在Win10上失败问题的分析和解决

来源:互联网 发布:淘宝拍卖业务管理规范 编辑:程序博客网 时间:2024/06/07 08:46

新换了Win10操作系统,系统自带IE11和Edge。

开发的一个项目使用到了Struts2,以前运行开发都没有问题。今天突然发现一个修改功能不好用了,通过排查发现是要页面上存在日期格式的文本框,并且其中有值,在提交的时候就会出现一个错误提示:

No result defined for action xxx.TestAction and result input


这个时候,可以判断出来是日期转换出现问题了。但不确定是浏览器还是操作系统造成的。于是换了几个浏览器,也用了虚拟机和别人的计算机测试,发现只有我主机上的IE11和Edge有这个问题,别人的IE11,我自己的虚拟机里的IE10,主机上的Google浏览器都没这个问题。这样看,还是无法准确判断错误原因,但我倾向于我主机的配置导致我的程序出现问题。

首先我以为是struts2.x的一个bug,然后把struts2.x升级到最新版本,并且也看了struts2的升级报告(并没有提到这个问题),问题依旧。

然后到网上搜了一下,以为需要自己实现一个日期转换器,以修正这个“bug”。转换器写到一半的时候,突然想到我应该调试跟踪一下,确认到底是不是Struts默认的日期转换器的问题。

跟踪调试过程中发现locale竟然是en_US,觉得挺奇怪的,我操作系统的国家或地区设置的就是中国啊。看来我自己win10还没用明白。

既然是locale的问题,那struts2好像可以通过配置来设置默认locale的。于是在struts.xml文件中增加一行配置:

<constant name="struts.locale" value="zh_CN" />


然后再测试,终于通过了。过程说起来挺简单的,其实我折腾了快2个小时。所以不能轻易更替开发环境啊。

记录下来,希望对别人有所帮助。

0 0
原创粉丝点击