六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 38|回复: 0

struts2 + jquery + json

[复制链接]

升级  70%

41

主题

41

主题

41

主题

秀才

Rank: 2

积分
155
 楼主| 发表于 2013-1-23 02:16:21 | 显示全部楼层 |阅读模式
在maven中添加如下包依赖:
<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-json-plugin</artifactId> <version>2.1.8.1</version></dependency>

在页面定义触发jquery的function方法:(要在页面导入jQuery.js)
function detail(param){   $.ajax({type: "post",url: "demo.do",data: "param="+param,dataType : "json",async : false,beforeSend: function(XMLHttpRequest){},success: function(data, textStatus){            // countStatList为action中的属性            countStatList =data.countStatList ;            for(ind in countStatList){            }},complete: function(XMLHttpRequest, textStatus){         },error: function(){   alert("失败,请联系管理员!");}  });}
说明:type:提交方式 post/get,相当于form的method属性;
     url:相当于form的action属性;
      data:提交的参数;
      dataType:远程调用返回值的类型;
      async:同步还是异步方式,默认是true表示异步;同步就是等ajax远程调用完成之后再继续运行如下代码;异步就是ajax远程调用的同时执行如下代码;
       beforeSend、success、complete、error:分别为ajax调用的生命周期;

定义action:
@SuppressWarnings( { "serial", "unchecked" })@Controller("console.statAjaxAct")@Scope("prototype")public class NokiaStatAjaxAction extends ActionSupport {  // ajax 调用返回list对象到js中  private List<Object> countStatList; //get/set method  public String demo(){    ......    countStatList =  (..db op ..);    ......    return "success";//对应result type="json"  }  }

在struts.xml中定义如下:
<package name="ajax" namespace="/admin/ajax" extends="json-default">  <action name="ajax_*" method="{1}"class="console.statAjaxAct">    <result type="json"></result>  </action></package>
说明:package要继承自json-default,定义result的type为json;

问题:
1、type="json"每个action的get方法都会执行一次?
2、用到struts2-json-plugin.jar时,会报找不到类org.apache.commons.lang.xwork.StringUtils,换用jsonplugin-0.34.jar时此问题解决;lang包下载都找不到xwork.StringUtils;
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表