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 methodpublic 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;
页:
[1]