`
lee1177
  • 浏览: 117935 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jquery+struts2传值及异常处理

 
阅读更多

最近项目使用jquery+strtus2的交互方式。之前对于传值和异常处理没有统一的规范,现在整理了一下感觉清晰很多,记录下来。

首先是ACTION方法

 /**
  * 获取角色列表JSON
  * @Methods Name getRoleListJson
  * @Create In May 26, 2011 By lee void
  */
 public void getRoleListJson(){
  String json = null;
  try{
   HttpServletRequest request = super.getRequest();
   QueryParam queryParam = HttpUtils.requestParam2QueryParam(request);
   json = roleService.getRoleListJson(queryParam);
   log.debug("RoleAction_getRoleListJson:write:"+json);
  }catch(Exception e){
   json = JsonUtils.errorJson(e.toString());
   e.printStackTrace();
  }
  super.writeToResponse(json);
 }

 

回写部分在Action基类做了一个writeToResponse方法的封装,避免重复代码

异常部分用自定义的JsonUtils.errorJson方法自动组装

这里返回total和rows是为了在给grid列表或下拉数据提供数据时避免解析异常准备的。

/**
  * AJAX请求在ACTION层异常时返回的数据
  * @Methods Name errorJson
  * @Create In Aug 5, 2011 By lee
  * @param error
  * @return String
  */
 public static String errorJson(String error){
   return "{\"total\":0,\"rows\"[],\"success\":false,\"error\":\""+error+"\"}";
 }

 

jquery部分因为使用了easyui中的dataGrid和form,所以有些返回需要加工,统一增加了异常处理的js代码.

 

首先对传值类型格式化,在共用js中设置jquery的AJAX请求

/**
 *全局AJAX请求设置
 */
 $.ajaxSetup({
  type:'post',
  dataType:'json'
 });

 

这里看似用处不大,但在刚开始使用jquery的AJAX请求时经常没有声明dataType搞的各种返回值解析,代码处理相当混乱,统一之后风格一致好了一些。

 

然后是各种请求的异常处理,同样在共用js中封装了个异常处理的小方法(这里使用了easyui的messager)

//检查错误并弹出提示
function dc_checkError(data){
 if(data.success==false){
  $.messager.alert('错误',data.error,'error');
  return;
 }
}

 

把异常处理加到各种请求中

1.普通AJAX

$.ajax({
     url : webContext + '/roleAction_saveRole.action',
     data :{
             xxx:xxx

     },
     success : function(data, textStatus) {
           dc_checkError(data);
           //成功逻辑     
     },
     error : function(xhr, ts, et) {
           //失败逻辑
     }
});

 

2.form提交

$('#xxxForm').form('submit', {
	url:webContext + '/xxxAction_save.action?',
	success:function(data){
		dc_checkError(data);
		//成功逻辑
	}
});

 3.dataGrid数据装载

$('#dataGrid').datagrid({
		title:'xxx',
		width:800,
		height:500,
		pageSize:ps,
		fit:true,
		rownumbers:true,
		url:webContext + '/xxxAction_getGridJson.action',
		columns:[[
			{field:'id',title:'ID',checkbox:true,width:20},
			{field:'name',title:'名称',width:100}
		]],
		pagination:true,
		onLoadSuccess:function(data){
			dc_checkError(data);
		}
});

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics