在Dorado的运行过程中动态装载数据、提交数据、执行AjaxAction、执行远程数据校验等动作都会发起Ajax类请求。由于此类请求对于返回数据的格式有着严格的要求,无论Server的逻辑成否都必须确保向Client返回特定格式的数据。因此通常不会使用ErrorPage机制。

要统一的处理Ajax类请求中的异常应利用Dorado提供的全局拦截器机制,见 定义各种全局拦截器。

很容易想象的是我们应该如何在这些拦截器中记录日志、改变传向客户端的异常信息。可是当我们一旦需要实现类似于普通请求中的出错重定向功能时应该怎么做呢?必须一旦业务系统抛出用户未登录或Session超时的异常时,即使在Ajax类请求中发生了这样的错误,开发者也仍然可能希望界面能够自动跳转到登录页面。

为解决这一问题,Dorado提供了一种特别的异常类com.bstek.dorado.view.resolver.ClientRunnableException。该异常类的作用是向Client端返回一段可执行的JavaScript脚本,当Dorado的客户端接收到这段脚本后会自动的执行它。

根据Dorado的AjaxEngine实现的规范,当其接收到content-type为text/runnable的Response时,会自动将Response的内容识别为JavaScript并立即执行它。

不过,由于Dorado中的Ajax请求支持请求自动合并的功能(一种自动将连续发出的Ajax请求合并为一次HTTP请求的优化功能),在这种合并请求中问题会变得比较复杂。因此,通常我们不建议你不要直接设置Response的content-type或者直接向Response的outputStream中进行输出。而是利用上面提到的ClientRunnableException这类经过包装方法。由于返回一段可执行的JavaScript会打破AjaxAction等Ajax操作在客户端的正常后续处理,因此Dorado将此操作视为失败的Ajax调用,在这种情况下AjaxAction的onSuccess事件不会被触发,相反onFailure事件会在执行的JavaScript被真正的执行前触发。

ajax dorado,02. Dorado的AJAX异常相关推荐

  1. Ajax网络超时和和网络异常

    回到文章总目录 Ajax网络超时和和网络异常 我们没有办法保证服务端能够快速的返回信息(浏览人数过多,服务器超载,等情况) 我们在前端给用户作出友好的提醒. 把产品体验做得更好. 案例 当服务器在两秒 ...

  2. 2010.02.03——Jquery ajax 动态更新 局部刷新

    2010.02.03--Jquery ajax 动态更新 局部刷新 最后的效果如图所示 ,说要达到的目标就是: 当我选着不同的时间,最后一列的时间也跟着变,并且将一系列的参数传到后台,计算出结果,并填 ...

  3. Day75.Ajax、拦截器Interceptor、异常映射、自动|手动类型转换、类型校验

    目录 一.Ajax ★ 1. 基本类型参数传递  @ResponseBody响应体 2. Ajax传递实体类 3.Ajax传递实体类带级联属性 (非json 普通参数) @DateTimeFormat ...

  4. [js点击]JavaScript之Ajax技术02

    事件监听接口 XMLHttpRequest第一版,只能对onreadystatechange这一个事件指定回调函数.该事件对所有情况作出响应. XMLHttpRequest第二版允许对更多的事件指定回 ...

  5. ajax+++fc,06. 实做AJAX(SEFC)

    下面我们通过实做AJAX对Dorado7中的AJAX操作做一定的了解. 页面功能描述: 首先我们设计一个Spring的JavaBean: 页面上放置三个按钮:button1, button2, but ...

  6. onuninitialized和ajax,12.3 Prototype对Ajax的支持

    12.3  Prototype对Ajax的支持 Prototype为Ajax开发提供了有力的支持,其中主要包括Ajax.Request.Ajax.Response.下面将对这两个核心支持进行讲解. ( ...

  7. java+ext.ajax,[转载]Ext Ajax:怎么调用Ext.Ajax.request方法和使用Java Servlet进行处理

    当前位置:我的异常网» Ajax » [转载]Ext Ajax:怎么调用Ext.Ajax.request方法和使 [转载]Ext Ajax:怎么调用Ext.Ajax.request方法和使用Java ...

  8. ajax要不要入口函数,Ajax - SegmentFault 思否

    ** Ajax 技术应用 1.Ajax 简介 1.1Ajax 是什么? Ajax (Asynchronous JavaScript and XML) 是一种Web应用技术,可以借助客户端脚本(java ...

  9. ajax资料收集-Ajax文章(教程和实例)---Ajax资源下载(源码和教程)---Ajax规范标准

    CSDN Blog Ajax文章搜索: http://search.csdn.net/search/ajax/1/blog/ 专题:Ajax技术应用开发 http://www.51cto.com/ht ...

最新文章

  1. 卡壳了~~~ 解决了~~~My Site创建成功了.....
  2. 网站外部链接优化如何进一步提升?
  3. 23. Leetcode 24. 两两交换链表中的节点 (链表-基础操作类-交换链表)
  4. Python应用实战案例-Pythongeopandas包详解(附大量案例及代码)
  5. DL之随机性:理解和探究采用深度学习算法预测时导致多次运行结果不一致的问题
  6. java课堂疑问解答与思考2
  7. Python开发基础 day5 函数的定义与使用
  8. 田牌魔术 | .NET Core 3.0 + Azure 远程点亮树莓派上的一盏灯
  9. beoplay耳机序列号查询_BO Beoplay E8评测:真正无线耳机,可自定义EQ设置和透明模式!...
  10. Ireport的安装及使用
  11. 在O(1)的时间删除链表结点
  12. Asp.Net 之Jquery知识点运用
  13. ajax请求进error怎么弹出错诶信息,在ajax请求jqgrid之后出现错误时显示错误消息...
  14. Jepack4.5.1上手动安装cuda10.0 cudnn 7, Jepack4.5.1 TX2 i安装pytorch1.6.0
  15. NXP数学电机库PI控制器参数的理解
  16. 第二章第一题(将摄氏温度转换为华氏温度)(Convert Celsius to Fahrenheit)
  17. Python三个数字排列大小
  18. PS改变icon图标颜色
  19. 红米手机4A怎么样刷入开发版获得ROOT权限
  20. javascript语言,定义变量

热门文章

  1. 新浪微博MySQL优化的小结和反思 | 数据库专题02
  2. Entity Framework 6新特性:全局性地自定义Code First约定
  3. java8(2)--- Stream API
  4. Linux 文件或文件夹重命名命令mv
  5. HBase集群环境部署
  6. sqlserver object_id()函数
  7. 求解斐波那契数列复杂度分析
  8. 编译驱动的Makefile解析
  9. flex 布局下关于容器内成员 flex属性的理解
  10. 根据屏幕大小制定显示页面