记得以前通常我们在调用 DWR 的远程方法是这样写Remote.method(params,function(data){
//服务端执行后客户端的逻辑,如
alert("服务端执行后返回的数据:"+data);
});
Remote.method(params,function(data){
//服务端执行后客户端的逻辑,如
alert("服务端执行后返回的数据:"+data);
});
第一个至倒数第二个参数为客户端传向服务端的数据,最后一个参数直接就是一个回调函数。因为服务端根据 Java 对象生成的 js 代码就是:
Remote.method = function(p0, callback) {
dwr.engine._execute(Remote._path, 'Remote', 'method', p0, callback);
}
所以很直观的把第二个参数理解为就是一个回调函数。当然要注意了,上面说的远程方法都是一个参数,如果为多个参数的话,callback 总是最后一个参数,如:
Remote.method= function(p0, p1, callback) {
dwr.engine._execute(Remote._path, 'Remote', 'method', p0, p1, callback);
}
你的 DWR 程序要是一切顺利,那都好说,算你幸运;而要是碰到了远程方法在处理你的请求时抛出了异常,你将会看到 DWR 只会给你一个 alert("Error") 简单显示错了,而这是不够的。所以你需要去琢磨如何主动捕获种这一错误,更友好的展示给用户。所以若碰到远程调用的异常,你同样是幸运的,因为又可以思考来学到一着。
那个 alert("Error") 其实是 DWR 的全局错误处理,可通过 dwr.engine.setErrorHandler(errorHandler) 来改变它的默认行为的,如
function errh(errorString, exception) {
alert("提示你自定义的全局出错信息。");
}
dwr.engine.setErrorHandler(errh);
也许我们很少这么做,因为全局性的错误处理满足不了个性化的远程调用。我们可以把错误处理 errorHandler 写在远程调用的函数参数中。回头看前面那个 callback,当它是一个函数时,就是个成功调用后的处理函数,它也可以是个包含几个函数的对象,此时远程调用就要这么写:
Remote.method(params,{
callback:function(data){ //调用成功时的处理函数
//服务端执行后客户端的逻辑,如
alert("服务端执行后返回的数据:"+data);
},
errorHandler:function(errorString, exception) {//执行异常时
alert('修改 XXX 时出错,请检查 XXX 云云:'+ errorString)
}
}
);
Remote.method(params,{
callback:function(data){ //调用成功时的处理函数
//服务端执行后客户端的逻辑,如
alert("服务端执行后返回的数据:"+data);
},
errorHandler:function(errorString, exception) {//执行异常时
alert('修改 XXX 时出错,请检查 XXX 云云:'+ errorString)
}
}
);
更深入的,callback 中不可以包括另外两个函数属性:exceptionHandler、warningHandler 和 textHtmlHandler。没有 exceptionHandler 处理函数就会去应用 errorHandler 函数,并且如果在 callback 函数中的 js 出错也会跑到 errorHandler 去执行的。详细的用法请见:http://directwebremoting.org/dwr/other/errors.html。
再,还能在 dwr.xml 中配置有关异常的 convert,如:
<convert match="java.lang.Exception" converter="exception"/>
这样你就能通过 errorHandler 的 errorString、exception 获取更详细的信息。有进一步的实际需求时再来深入。
相关推荐
dwr 各种调用方法 不同类型
springboot整合dwr实现js调用java方法,页面支持freemarker和jsp
dwr调用带集合返回值的方法,dwr调用带集合返回值的方法
DWR中各种java方法的调用,DWR应用
DWR实现java类转换成JavaScript类的小例子。
文章分类:Web前端 关键字: 批量调用和超时设置注意事项 有时我们为了减少向服务器提交的次数,我们可以向服务器批量提交所要执行的方法。但这样又会给我们带来一些额外的负担,下面将给出解决方法和我们在开发中...
dwr dwr项目 js 调用 java 后台 方法 js调用java后台方法 后台方法 异步
dwr 的简单应用,包括前台调用后台,后台调用js
怎么将利用DWR调用JAVA类方法所返回的ArrayList数组 赋值给 logiciterate 迭代器?.txt怎么将利用DWR调用JAVA类方法所返回的ArrayList数组 赋值给 logiciterate 迭代器?.txt怎么将利用DWR调用JAVA类方法所返回的...
dwr实例
以上本人学习DWR后总结的一个简单的文档,主要总结了调用方法,以及不同参数形态的传递方法,例如,多参数传递、Map参数传递、List参传递数,对象参数传递有参数互传等。
dwr方法调用祝你网络编程天天顺手。。。。。。。。。。。。。。。。。。
NULL 博文链接:https://docs.iteye.com/blog/324687
DWR的一个小示例,完成了使用DWR框架调用后台类的无参方法、有字符串参数的方法、有自定义对象为参数的方法、返回对象为字符串或自定义对象或自定义对象集合等方法的调用方式。
creator="new"属性指定java类实例的生成方式,new意味着DWR应当调用类的默认构造函数来获得实例,其他的还有spring方式,通过与IOC容器Spring进行集成来获得实例等等。javascript=" testClass "属性指定javascript...
希望这个文件可以帮到很多人,有好资源就要无私地奉献!
因为调用远程bean的方法前DWR不会检测将要执行的方法是不是静态方法,如果是静态方法那么creator就不用创建.这种机制可以适用任何类型的creator,但new类型的creator是最简单配置的. 3.2 Security Creator可以配置类的...
DWR与JSP DWR调用内置对象 内置对象 DWR与JSP DWR调用内置对象 内置对象 DWR与JSP DWR调用内置对象 内置对象
调用带JavaBean参数方法的DWR例子
DWR是作为远程调用的ajax框架[参照].pdf