调一次ajax执行两次action或是还有执行其他的action

解决方法一:

Action中的业务方法前别加get 或者 set(属性的get set 除外) 

解决方法二:

在调用的action和其他也被莫名其妙执行的action的头部加@JSON(serialize=false)就可以了。导入的包为:import org.apache.struts2.json.annotations.JSON;

例子:action代码

@JSON(serialize=false)
@Action(value = "/datalist", results = { @Result(name = "success", location = "/showTable.jsp") })
public String getdatainterface(){
System.out.println("------------------datalist-----------------");
List<RkrmRscZxid> list=datainterface.getAllInterfaces();
session.put("data", list);
return "success";
}

@JSON(serialize=false)
@Action(value = "/tablelist", results = { @Result(name="success",type="json") })
public String gettable(){
System.out.println("--------------tablelist----------------");
System.out.println(username);
List<RkrmRscZxid> list=datainterface.getAllInterfaces();
session.put("data", list);
List<String> list1=datainterface.gettable(username);
List<RkrmZxid> list2 = new ArrayList<RkrmZxid>();
for(int i=0;i<list1.size();i++){
RkrmZxid rkrmZxid = new RkrmZxid();
rkrmZxid.setTable_name(list1.get(i));
list2.add(rkrmZxid);
}
ActionContext tx= ActionContext.getContext();
err="0";
tx.getSession().put("err",err );//将值放在session中
session.put("tablelist", list2);

return "success";
}

ajax代码:

$("#chaxun").click(function(){
alert("chaxun");
var select = $("#zyid");
var value = select.attr("value");
alert(value);
var data = {"username":value};
var url="tablelist";
$.ajax({
url : url,          //后台处理的地址
type : "POST",
data :data ,
dataType : "json",
success : function(m) {
//location.reload(true);
alert("success!!");
var err = m.err;
 alert(err);
},
error : function(m){
    alert("error!!1");
     var err = m.err;
 alert(err);
//location.reload(true);
}
}); 
event.stopPropagation();  
});

这个例子只想执行action的gettable()方法,但是他会把此方法执行两次,还要执行一次getdatainterface();加上@JSON(serialize=false)就好了,只执行gettable()方法且执行一次

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值