同事在使用struts2的时候,出现两个问题:
1、No result defined for action XXX and result input;
2、前端js使用jQuery的i18n一直显示的是英语;
而且关键是,在大部分的浏览器上都是正常的,只有在个别电脑上的浏览器会出现这个问题。
网上很多资料显示是因为前端form表单提交的数据类型和后台action中的字段类型不匹配引起的,可是检查了发现了后台action中字段的类型除了String就是Date,没有什么int等,这就奇怪了。于是采用了逐步缩小范围的调试策略,逐渐减少字段,最后终于定位是Date类型的。可是发现前端提交的字段也没有什么问题啊。最后经过排查,发现是浏览器语言的问题,因为这几个机子的浏览器语言都是“英语”。回头查看了下Struts2的缺省日志转换器DateConverter(确切说是XWork的),发现这个转换器是和Locale相关的,也就是说和地域和语言有关的,至于其源码以后有时间再分析吧。
这个问题,折腾了小1个小时,这里记录下来以供大家参考,不要在此浪费时间。