`

struts2 + jquery + json

阅读更多
在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;
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics