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

首先要明确的是,对于复杂类型的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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值