您的位置:首页 > 编程语言 > Java开发

struts2中action返回"json"字符串

2016-10-09 15:40 309 查看


最近做项目,项目中使用了struts2结合spring。发现页面发送ajax请求到action中时,action的返回值只是一个return "json"(注:值为"json")。而页面中ajax的返回值则是json格式的值。对于较少使用struts2的同学来说,多少会有些迷惑。本人查了一些资料才搞明白struts2原来幕后做了一些工作来简化逻辑。那么struts2都做了什么又是如何在配置和代码中体现的呢?
配置如下:

需要action所在的package继承了json-default,或者继承的父包继承了json-default。配置action的结果返回类型的type为json。

<package name="json" namespace="/test" extends="struts-default,json-default" >
<action name="json" class="json.JsonAction" method="operatFun">
<result type="json">
<param name="root">jsonMap</param>
</result>
</action>
</package>
代码如下:

注意 dataMap 必须是action类中的一个属性值,且实现了get方法。

public class JsonAction extends BaseAction{

private Map<String,Object> jsonMap= new HashMap<String,Object>();

public Map<String, Object> getJsonMap() {
return jsonMap;
}
public void setJsonMap(Map<String, Object> jsonMap) {
this.jsonMap = jsonMap;
}

public String operatFun{
//一些逻辑处理
//给jsonMap赋值
jsonMap.put("name", "尼玛");
jsonMap.put("age", 10);
jsonMap.put("success", true);
return "json";
}
}
页面ajax:

jQuery.ajax({
type:"post",
url:"$homeModule.getTarget("/test/operatFun.action"),
async:true,
dataType: "json",
success:function(result){
if(result.success == true){
name=result.name;
age=result.age;
}else{
name="";
age=0;
}
},
error:function(result){
alert("失败,请重试");
}
});
});

至此,我们可以看到action返回了一个"json",而ajax得到了一个json。(是不是有点绕

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts2.0 json