最近项目使用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);
}
});
分享到:
相关推荐
Struts 1.3 +JQuery+Json Post传值 由于网上关于这个的资料很少,现整理出来,方便大家学习. 关于Json的优势,网上的评价都很高,对于处理复杂的数据相对于处理xml来说要好很多,更多关于这方面的知识读者可以到网上...
Jquery+struts2上传图片,制作进度条等示例,还有Jquery+Json+Struts实现Ajax技术,还有图形处理技术等,虽然很少,但都有重点突出,由于我也是学习,所以代码不是很简洁,对想学习交流的朋友非常合适
jquery+struts2实现文件上传,没有jar包。下载来只需引入struts2jar就可以了
json+jquery+struts2+hibernate+spring 实现的小型bbs系统,这个提供包 ,很不错的下载后,好好徐希一下吧
struts2 json jquery ajax实现用户登陆及业面跳转
一个用jQuery+struts2完成的省市联动
jquery+struts2+upload。自己做的一个例子
jquery+struts2
MyTestDemo02 jquery+struts2+hibernate+mysql web框架应用实例!
jcrop + jquery+struts2 图片裁剪,要想开发出符合自己的图片,请先看API
jquery+struts2实现异步刷新,是个不错的实例,可以结合到项目中使用,简单易懂。
MVC Struts2框架搭建,Jquery Ajax异步数据交互,内涵需要的jar包及ppt讲解
jquery + struts1 + ajax学习例子
NULL 博文链接:https://gongchangming.iteye.com/blog/421351
spring+hibernate+jpa+struts1+struts2+springmvc+jquery+freemaker 学习笔记 Compass将lucene、Spring、Hibernate三者结合
使用Spring+Struts2+JQuery配合实现简单的登录,使用工具MyEcplise
jquery+uploady+struts 实现图片上传
自己整理的jquery+json+struts2异步传输的例子,包括异步提交form,异步传输json对象。
JEECMS使用目前java主流技术架构:hibernate3+struts2+spring2+freemarker。AJAX使用jquery和json实现。视图层并没有使用传统的JSP技术,而是使用更为专业、灵活、高效freemarker。 数据库使用MYSQL,并可支持orcale...
jquery easyUI+struts2+spring+hibernate基于annotation实现的CRM