前端之家 收集整理的这篇文章主要介绍了
关于dwr消除服务器端出错时弹出alter的解决方案 ,
前端之家 小编觉得挺不错的,现在分享给大家,也给大家做个参考。
环境:dwr3+jsp
在开发中,我实在不希望dwr弹出alter,只需要打印错误 日志就可以,客户端不需要alert出error或者a server error has occurred. 这样的提示 ,更不需要alert出堆栈信息,客户根本看不懂,也不需要看。怎么办?
经过分析,engine.js中有dwr的默认错误 句柄, defaultErrorHandler,如果用户 没有定义errorhandler,就会把defaultErrorHandler赋给errorhandler。那我们就写一个js覆盖errorhandle就可以。
js内容 如下:
dwr.engine._errorHandler = function(message,ex) {dwr.engine._debug("Error: " + ex.name + "," + ex.message,true);};
只有上面一句话,上这个js引入到需要加入的页面 中,dwr服务端出了错,只会打印日志,不会alter了。
使用 ajax 的 dwr 框架弹出 error 对话框
在 SSH 框架中,使用 ajax 的 dwr 框架弹出 error 对话框,容易出现这种情况。这是错误 的统一提示 ,但是这样的提示 不够友好,并不知道错误 详细情况,可以在 dwr.xml 的配置文件 <allow> 结点内添加 如下代码
view source
print ?
@H_404 _102@1
@H_404 _102@<ALLOW>
@H_404 _102@2
@H_404 _102@<CONVERT converter="bean" match="java.lang.StackTraceElement" />
@H_404 _102@3
@H_404 _102@<CONVERT converter="exception" match="java.lang.Exception" />
@H_404 _102@4
@H_404 _102@</ALLOW>
这一样来可以打印出错误 详情,这时通常会弹出 "a server error has occured" 提示 框,一般这种情况是由于javascript 在调用 java 方法 时,这时业务逻辑层(biz/service )并非由 spring 产生,所以这时的业务逻辑层无法被注入数据访问层 ( 通用 dao) ,有两种解决方 案:
一:你可以重新 new 一个 spring 配置文件 对象 applicationContext ;或是在 javascript 要的访问的 java 方法 中写上自己的数据访问实现
二:把 "bean" 改 "spring" ,表明不是自己创建,而是由 spring 创建
print ?
@H_404 _102@1
@H_404 _102@<ALLOW>
@H_404 _102@2
@H_404 _102@<CONVERT converter="spring" match="java.lang.StackTraceElement" />
@H_404 _102@3
@H_404 _102@<CONVERT converter="exception" match="java.lang.Exception" />
@H_404 _102@4
@H_404 _102@</ALLOW>