昨天修改了一下结算模块 的异常
具体情况描述:
一部分机子运行代码无异常,一部分机子运行代码 在 运行到js 中DWR 方式 直接调用Business 层代码时抛出Error 异常
技术分析:
因为此段代码使用的是Ajax 的DWR 技术,为了是页面和客户有更好的交互性所以使用JavaScript 技术。在js 代码中直接调用Business 层的代码。
无论是装IE6 还是IE7 的电脑,有些会在js 中执行到这一句的时候抛出Error异常,这样表明在 Business 层执行中出错
查找方式:
使用最常规,最笨的办法 System.out.println(); 逐行输出,检查哪行出错误
查找结果:
在js 代码中使用到了
Var date = new Date();
Var nowDate = date.toLocaleString();方法
此方法在不同的浏览器设置中转换的格式不同
例如:xxxx年xx月xx日 xx:xx:xx
xxxx – xx – xx xx:xx:xx
而在底层我使用了:
public Date stringToDate(String dateStr) throws Exception{
if(dateStr != null && !"".equals(dateStr)){
DateFormat df = new SimpleDateFormat("yyyy年MM月dd HH:mm:ss");
return df.parse(dateStr);
}else{
return null;
}
}
进行转换 yyyy年MM月dd HH:mm:ss 转换的格式不通用。因此此抛出异常
解决方式:
转换成统一的 yyyy-MM-dd 格式
使用方法:
var lastDate = new Date();
return lastDate.getYear() + "-" + (lastDate.getMonth()+1) + "-" + lastDate.getDate() ;
参考网站:
http://www.w3school.com.cn/js/jsref_obj_date.asp