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的代码,这样影响以后的维护。