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

前端之家收集整理的这篇文章主要介绍了Ajax与struts2、JQuery配合实现异步响应,处理list类型对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
首先要明确的是,对于复杂类型的list,尤其是自定义类型的list,JQuery是无法直接识别并操作的,只有将其转换为JSONArray格式,才能被JQuery识别并操作。因此,一次异步请求过程可按如下进行:

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


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

猜你在找的Ajax相关文章