extjs和struts2配合使用时的异常处理思路,仅供参考
来源:互联网 发布:初级编程教学视频教程 编辑:程序博客网 时间:2024/05/29 09:16
针对请求:
(1)页面跳转请求 ,struts2配置事例如下:
<action name="warningSMSIndex" class="warningSMSAction" method="warningSMSIndex"> <result name="success">index_warningSMS.jsp</result> </action>(2)json请求,struts2配置事例如下:
<action name="queryWarningSMSList" class="warningSMSAction" method="queryWarningSMSList"> <result name="success" type="json"/><result name="error" type="json" /> </action>
这里面的json是自己写的插件,会将strus2的所有属性返回到前台,属性中会包含success,isException,message等
针对返回情况:
(1)请求成功,返回success
(2)请求出现业务异常,在程序中需要处理,action层事例代码如下:
@JSONpublic String updateWarningSMS(){try{warningSMSService.updateWarningSMS(warningSMSVo ); return this.returnSuccess();}catch(WarningSMSException e){return this.returnError(e);} }
(3)请求出现系统异常,即无法预知的异常,由strus2的ExceptionInteceptor拦截器处理,处理思路如下
1.如果是页面跳转的请求,会将异常信息转换成html,在前台直接显示
2.如果是json请求,通过@json注解来判断,会将异常信息转换成json格式
extjs前台的处理:
Ext.Ajax.request({ scope: this, url:url, waitMsg: '正在保存...', params : form.getValues(), success: function( res,form) { Ext.ux.Toast.msg('提示', '保存成功'); this.getWindow().down("grid[itemId=grd1]").getStore().load(); }, exception:function( res,form){ var json= Ext.decode(res.responseText); Ext.ux.Toast.msg('业务异常', json.message,'error', 4000); }, unknownException: function(res, form) { var json= Ext.decode(res.responseText); Ext.ux.Toast.msg('系统异常', json.message,'error', 4000); } });
这里不是原生的extjs的代码,而是通过加工,加工思路如下:
1.如果正常返回会调用success方法
2.如果出现业务异常,会掉excetion方法
3.如果出现未处理的异常,会调用unknownException方法
核心代码如下,仅供参考
if(contentType.toLowerCase()=='application/json;charset=utf-8') {
var json = Ext.decode(response.responseText);
if(json) {
//业务执行成功
if (json.success && !json.isException) {
Ext.callback(options.success, options.scope, [response, options]);
//业务异常
} else if (!json.success && !json.isException) {
Ext.callback(options.exception, options.scope, [response, options]);
//未知异常
} else if (!json.success && json.isException) {
if(json.stackTrace && json.stackTrace.indexOf("UserNotLoginException") > 0) {
BI.exception.MessageBox.showGoLoginWin();
return;
}
if(json.errorCode == BI.CONFIG.SECURITY_NOTALLOW) {
Ext.ux.Toast.msg('', json.message, 'error');
}
Ext.callback(options.unknownException, options.scope, [response, options]);
}
}
}
个人感言:
我是做个c/s开发的出身的,在c/s开发中处理异常很简单,在application中有一个error事件,会自动捕捉异常,但是在b/s开发下却需要自己来设计,曾经想过,在service层抛出RuntimeException异常,在action曾通过e.getmessage()将异常信息获取出来,然后返回到前台,但是这样一来没所有异常都返回到前台,而我们在开发的时候应该只关注业务异常,这个思路特别好,今天使用了公司的框架,这个框架对异常处理非常好,所以分享出来,由于是公司的框架,不方便把所有代码都贴出来,只提供一个思路,还请谅解
- extjs和struts2配合使用时的异常处理思路,仅供参考
- 关于struts2和javamail的配合使用
- EXTJS中TreePanel和TabPanel配合使用的问题
- struts2全局异常处理及配合log4j异常日志记录
- ExtJs treepanel和TabPanel配合使用
- struts2使用 displaytag 分页异常的处理
- struts2使用 displaytag 分页异常的处理
- Struts2异常处理机制的使用(八)
- ExtJs的Grid组件配合struts2返回json数据
- 数据库连接异常的处理思路
- struts2的异常处理
- Struts2的异常处理
- Struts2的异常处理
- struts2的异常处理
- GooSeeker抓取网页和CMarkup处理xml的配合使用
- Tachyon的安装、配置和使用【仅供参考】
- 关于fastjson,jackson,struts2插件的使用(仅供参考)
- Struts2使用24 -- 异常处理
- Android 的color.xml
- 合并两个排序的链表
- android应用开发详解(九)------------------日期和时间选择对话框
- 更新 ubuntu12.04的 kernel boot parameter
- 系统学习数字图像处理之形态学分析
- extjs和struts2配合使用时的异常处理思路,仅供参考
- Android View绘制流程
- 字符串要求字母、数字、特殊字符,至少有两项。正则表达式不好写,可以用这个方法实现。
- vs2008最近打开的项目清除方法
- 关于lock和monitor
- 关于web工程的结构
- JSP中用EL表达式取Map中某一个key对应的value
- EF 单复数自动识别功能
- size() == 0和empty()的比较