Struts2自带的自动完成功能,来自dojo。
对英文字母的自动完成没有问题。
但在IE7中输入中文,在服务器端成为乱码。
原因是:
对英文字母的自动完成没有问题。
但在IE7中输入中文,在服务器端成为乱码。
原因是:
- 自动提交在dojo中默认使用GET请求
- firefox对文本框中的文本,会进行编码再发送,比如输入内蒙,则编码为%E5%86%85,这在服务器端能正常解码处理
- IE对文本框中的值,不做编码即发送,在服务器端无论使用utf-8还是GBK等,都会出现乱码,因为特殊字符在http的url编码中有特殊含义,这个问题,可参考我的另外一篇日志:http://marshal.javaeye.com/blog/149121
- 可以修改struts代码中有关dojo部分的代码,将AJAX默认提交方式改为POST,可参考:http://hi.baidu.com/javaroad/blog/item/5c0a861e3da6d41d4134179d.html,情况类似
- 使用第三方解决方案,我一般使用YUI的自动完成功能,理由是不想修改struts2的代码,这样影响以后的维护。
探讨了Struts2框架中使用dojo实现自动完成功能时遇到的中文乱码问题,尤其是在IE7浏览器下。分析了问题产生的原因,并提出了两种解决方案:一是修改Struts2源代码以改变默认的AJAX请求方式;二是采用YUI等第三方库来替代。
651

被折叠的 条评论
为什么被折叠?



