Ajax与struts2、JQuery配合实现异步响应,处理list类型对象

来源:互联网 发布:爱淘宝返利多少 编辑:程序博客网 时间:2024/05/18 02:56
首先要明确的是,对于复杂类型的list,尤其是自定义类型的list,JQuery是无法直接识别并操作的,只有将其转换为JSONArray格式,才能被JQuery识别并操作。因此,一次异步请求过程可按如下进行:

1.前台页面中发起异步请求的代码如下:
<script language="javascript">$(document).ready(function(){        $.ajax({    url:"ajaxToResponse.action",    type:"post",    dataType:"json",    data:{},    error:function(){     alert("error");    },    success:function(data){     var buf="" ;      $.each(data,function(commentIndex, item) { //遍历返回数组的每一个实体       buf+=item.name;        ....               });     $("#resultHtml").append(buf);    }   }); });</script>


注意要在页面中引入JQuery,"<script src="js/jquery-1.9.1.js"></script>"
2.后台action的处理如下(注意,此处对于action使用的是注解方式,因此无需再在Struts.xml中对action进行配置,注解的原理即为省略xml配置,将配置过程在java代码中动态添加即可,极大的方便了开发过程)。
@ParentPackage("struts2")public class MyAction extends ActionSupport{private List<T> list; private JSONArray responseJson;//需要set、get方法,否则将无法获得该对象public void setResponseJson(JSONArray responseJson)    {        this.responseJson = responseJson;    }    public JSONArray getResponseJson()    {        return responseJson;    }@Action(value="ajaxToResponse",results= {@Result(name=SUCCESS,type="json",params= {"root","responseJson"})}) //注解部分,value为actionname,results定义结果集;//sturts中需要将package定义为如下形式“<package name="struts2" extends="struts-default,json-default">”//然后在action中需要继承自该package——“@ParentPackage("struts2")”//  @Result中,SUCCESS为结果标识,type需定义为json格式,params中定义返回对象    public String ajaxToResponse() throws JSONException    {       //向数据库中获取数据,构造list        JSONArray jsarry=new JSONArray();        jsarry=JSONArray.fromObject(list);//将list转换为JSONArray格式        this.setResponseJson(jsarry); //赋值到responseJson        return SUCCESS;    }}



0 0