`

DWR 调用远程方法的错误和异常处理

阅读更多

记得以前通常我们在调用 DWR 的远程方法是这样写

双击代码全选
1
2
3
4
5
6
7
8
Remote.method(params,function(data){  
    //服务端执行后客户端的逻辑,如  
    alert( "服务端执行后返回的数据:" +data);  
}); 
Remote.method(params,function(data){
    //服务端执行后客户端的逻辑,如
    alert( "服务端执行后返回的数据:" +data);
});

  第一个至倒数第二个参数为客户端传向服务端的数据,最后一个参数直接就是一个回调函数。因为服务端根据 Java 对象生成的 js 代码就是:

双击代码全选
1
2
3
Remote.method = function(p0, callback) {
    dwr.engine._execute(Remote._path, 'Remote' , 'method' , p0, callback);
}

  所以很直观的把第二个参数理解为就是一个回调函数。当然要注意了,上面说的远程方法都是一个参数,如果为多个参数的话,callback 总是最后一个参数,如:

双击代码全选
1
2
3
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) 来改变它的默认行为的,如

双击代码全选
1
2
3
4
5
function errh(errorString, exception) {
    alert( "提示你自定义的全局出错信息。" );
}
 
dwr.engine.setErrorHandler(errh);

   也许我们很少这么做,因为全局性的错误处理满足不了个性化的远程调用。我们可以把错误处理  errorHandler 写在远程调用的函数参数中。回头看前面那个 callback,当它是一个函数时,就是个成功调用后的处理函数,它也可以是个包含几个函数的对象,此时远程调用就要这么写:

双击代码全选
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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,如:

双击代码全选
1
<convert match= "java.lang.Exception" converter= "exception" />

  这样你就能通过 errorHandler 的 errorString、exception 获取更详细的信息。有进一步的实际需求时再来深入。

分享到:
评论

相关推荐

    dwr 各种调用方法

    DWR也提供了丰富的错误处理机制,当Java方法抛出异常时,可以在JavaScript中捕获并处理。 6. **安全性与性能优化** DWR提供了安全控制,可以通过白名单或者黑名单的方式来限制可以调用的Java方法。另外,DWR支持...

    Dwr源码示例,包含调用java方法返回不同的类型

    在这个"Dwr源码示例"中,我们将深入探讨如何使用DWR调用Java方法,并处理各种类型的参数和返回值。 首先,DWR的核心功能是提供了一种安全、高效的AJAX(异步JavaScript和XML)框架。它通过创建一个JavaScript到Java...

    DWR是作为远程调用的ajax框架[参照].pdf

    在`hello.js`中,我们定义了两个JavaScript函数`load()`和`jbClick()`,`jbClick()`函数通过DWR调用`getHelloWorld()`方法,并将结果传递给回调函数`callback()`。最后,在`HelloWorld.html`中,我们设置了页面布局...

    dwr 查询返回list处理

    因此,应确保对DWR调用进行适当的权限验证和安全控制。 10. **调试与日志**:DWR提供了一些调试工具和日志记录功能,可以帮助开发者在开发过程中定位问题。例如,DWR Console可以在浏览器中查看调用历史和返回数据...

    DWR小代码小例子

    3. **JavaScript API**:DWR自动生成了一套JavaScript接口,使得前端可以像调用本地函数一样调用远程Java方法。例如,你可以使用`DWRUtil`工具类来进行数据转换,或者通过`DWREngine`管理异步调用。 4. **安全与...

    DWR中文文档 (DWR 2.0)

    6. **调用远程的Cart方法**:详细介绍如何通过DWR调用具体的购物车服务端方法。 7. **演示结果**:提供最终实现效果的截图或视频。 8. **总结**:回顾项目过程,总结经验和教训。 #### 五、附录 **10.1 常见问题**...

    dwr案例源码

    7. **错误处理**:理解DWR的错误处理机制,包括网络错误、服务器端错误和安全异常等。 8. **页面集成**:了解如何在HTML页面中引入DWR的JavaScript库,以及如何在页面中合适的位置调用远程方法。 9. **性能优化**:...

    dwr.jar dwrUtil常见方法 dwr详细资料

    - `handleError`: 错误处理机制,捕捉并处理在DWR调用中出现的异常。 6. **DWR配置**:DWR的配置文件(通常为`dwr.xml`)用于设置允许的远程方法、安全策略、转换器等,确保应用的安全性和性能。 7. **DWR与...

    dwr经典实例(9个常用实例)

    6. **回调函数**: 在DWR调用中,可以设置回调函数来处理服务器端返回的结果,使得异步处理更加灵活。 7. **异常处理**: DWR能够处理服务器端抛出的异常,并将其转换为客户端可读的错误信息。 8. **对象映射**: DWR...

    dwr3api+DWR文档.pdf

    文档会介绍如何使用这些接口,以及如何定义和调用远程Java类和方法。 4. **安全与权限控制**:DWR提供了安全机制,如白名单、IP限制和安全配置,以防止未授权的远程方法调用。 5. **类型转换**:DWR自动处理Java...

    dwr学习教程3

    3. **错误处理**:DWR提供了错误处理机制,可以在客户端捕获和处理服务器端的异常。 4. **集成其他技术**:DWR可与Spring、Struts等框架无缝集成,提升开发效率。 通过【DWR视频教程3】,你将系统学习到如何配置...

    ajax的dwr包

    6. **错误处理**:DWR提供了友好的错误处理机制,可以在客户端捕获并显示服务器端的异常信息。 在使用DWR时,开发者首先需要在服务器端创建可远程访问的Java类和方法,然后在客户端使用DWR生成的JavaScript接口与...

    dwr.rar_dwr

    DWR简化了Ajax开发,使得开发者可以像操作本地对象一样方便地调用远程服务器上的Java方法。 在“dwr.rar_dwr”这个学习资料中,我们重点关注的是DWR框架的使用和理解。DWR的核心特性包括: 1. **自动暴露Java方法*...

    一个DWR例子,直接导入eclipse可运行

    DWR提供了一套机制来处理远程调用失败的情况,包括JavaScript中的异常处理和服务器端的日志记录。 10. **调试工具**: - DWR提供了内置的调试工具,如DWR Explorer,它可以帮助开发者查看和测试DWR接口,方便开发...

    DWR2.0 整合Spring2.0

    8. **异常处理**:DWR2.0的异常信息可以通过Spring的统一异常处理机制进行捕获和处理,提供更友好的错误提示,提高用户体验。 整合DWR2.0和Spring2.0的过程通常包括以下几个步骤: 1. 添加DWR和Spring的依赖库到...

    dwr案例+文档+jar

    7. **异常处理**:学习如何处理DWR调用过程中可能出现的错误和异常,提供友好的用户体验。 总之,这个压缩包提供了全面了解和掌握DWR所需的所有资料,无论是初学者还是有一定经验的开发者,都能从中受益。通过学习...

    springMVC集成dwr

    4. **调试友好**: DWR 提供了内置的调试工具,可以在浏览器端查看和调试远程调用的日志和异常信息。 **注意事项** 1. **性能优化**: 在大规模应用中,应考虑 DWR 的性能影响,可能需要对调用频率、批量处理等进行...

    dwr和简单的文件上传

    DWR通过提供对Java方法的远程调用支持,简化了这个过程。 首先,我们需要在服务器端设置DWR引擎。这通常包括创建一个`dwr.xml`配置文件,其中定义了哪些Java类和方法可以被JavaScript调用。例如,你可以定义一个...

    dwr原理深入透彻讲解

    10. **错误处理**:DWR还提供了错误处理机制,当服务器端抛出异常或者通信出现问题时,可以在客户端捕获并显示错误信息。 理解DWR的这些工作原理对于开发人员来说至关重要,它能帮助你更有效地利用DWR进行前后端...

Global site tag (gtag.js) - Google Analytics