解决DWR2.0发送数据Locale为zh_C的BUG
来源:互联网 发布:阿尔法编程 加盟 编辑:程序博客网 时间:2024/05/21 22:56
在编程中,使用DWR进行AJAX交互。后台采用的是判断request的local来选择国际话资源,结果老是不正确,一查才发现Local竟然是zh_C。于是追溯到Servlet的doPost,还是zh_C。继续追溯,发现是HTTPXML做POST动作时,发送的language不对。但是jquery却能正常,比较了一下,发现DWR采用的是new ActiveXObject的方式产生的XMLHTTPRequest。而jquery是直接使用浏览器内置对象。难怪与通常的会不一致,也许IE的某个DOM出了问题,错把zh_C当zh_CN来用了吧。
找到问题了解决起来就简单。修改dwr的engine.js,找到以下语句:
try {
for (prop in batch.headers) {
var value = batch.headers[prop];
if (typeof value == "string") batch.req.setRequestHeader(prop, value);
}
if (!batch.headers["Content-Type"]) batch.req.setRequestHeader("Content-Type", "text/plain");
}
添加修正头部浏览器语言的代码,改为这样:
try {
for (prop in batch.headers) {
var value = batch.headers[prop];
if (typeof value == "string") batch.req.setRequestHeader(prop, value);
}
if (!batch.headers["Content-Type"]) batch.req.setRequestHeader("Content-Type", "text/plain");
//fix language header bug under IE
if(navigator.systemLanguage){
batch.req.setRequestHeader("accept-language", navigator.systemLanguage);
}
}
在servlet的doPost于是就收到了正确Locale
折腾死我了,google也找不到答案,幸好开源的能够追踪代码。
找到问题了解决起来就简单。修改dwr的engine.js,找到以下语句:
try {
for (prop in batch.headers) {
var value = batch.headers[prop];
if (typeof value == "string") batch.req.setRequestHeader(prop, value);
}
if (!batch.headers["Content-Type"]) batch.req.setRequestHeader("Content-Type", "text/plain");
}
添加修正头部浏览器语言的代码,改为这样:
try {
for (prop in batch.headers) {
var value = batch.headers[prop];
if (typeof value == "string") batch.req.setRequestHeader(prop, value);
}
if (!batch.headers["Content-Type"]) batch.req.setRequestHeader("Content-Type", "text/plain");
//fix language header bug under IE
if(navigator.systemLanguage){
batch.req.setRequestHeader("accept-language", navigator.systemLanguage);
}
}
在servlet的doPost于是就收到了正确Locale
折腾死我了,google也找不到答案,幸好开源的能够追踪代码。
- 解决DWR2.0发送数据Locale为zh_C的BUG
- 解决RabbitMQ发送数据为空字符串
- jsp里引用jar包里的js解决dwr2.0 reverse ajax没启用问题
- 解决locale error 的问题
- 关于DWR2.0的配置问题
- dwr2.0与dwr1.1的区别
- DWR2.0 引用 ScriptSession的一些介绍
- 视频传输播放为解决的bug
- 解决底部弹窗高度最高为半个屏幕高度,变动数据出现非半屏的bug
- Oracle时间类型数据为0的Bug
- Oracle时间类型数据为0的bug
- 记录RecycleView的数据错乱BUG解决
- 解决cannot change locale 的问题
- "perl: warning: Setting locale failed."的解决
- "perl: warning: Setting locale failed."的解决
- 简单解决Ubuntu修改locale的问题
- 解决ubuntu设置locale的问题
- DWR2.0笔记
- DELPHI 做的网站速开器
- 对Excel表与数据库的操作
- DELPHI 做的记事本
- C#保留2位小数总结
- JFreeChart最新版本1.0.8a的研究系列——JFreeChart的使用
- 解决DWR2.0发送数据Locale为zh_C的BUG
- 最简单的java程序
- CMD启动目录更改
- JFreeChart最新版本1.0.8a的研究系列——生成饼图
- C语言中的多维数组
- jdk环境变量的设置
- 李开复给中国大学生的一封信
- 在Eclipse中使用JUnit4进行单元测试(初级篇)
- 在Eclipse中使用JUnit4进行单元测试(中级篇)