使用struts2返回json的方法如下:
1.配置struts.xml文件
<package name="json" extends="json-default" >
<action name="testByAction"
class="cn.ysh.studio.struts2.json.demo.action.UserAction" method="testByAction">
<result type="json">
<param name="includeProperties">
dataMap.*
</param>
</result>
</action>
</package>
includeProperties表名要包含的在JSON对象中的属性名,JSON支持很多种数据,包括常用的java类型,以及类,LIST,MAP等类型.MAP类型属性,配置时要写成,MAP名.*,否则会返回空,即""
param 可以配置多种参数,可以配置启动时不包含哪些问题,如
excludeProperties
可以表明JSON里面不包含哪些类中的.excludeProperties有比includeProperties更高的权限.
2.action源文件
action源文件中要写出供JSON使用的getter方法,对于未定义的属性,也可以创建相应的getter方法供JSON使用.
private Map<String, Object> dataMap;
public String testByAction() {
// dataMap中的数据将会被Struts2转换成JSON字符串,所以这里要先清空其中的数据
dataMap.clear();
User user = new User();
user.setId("123");
user.setName("JSONActionStruts2");
user.setPassword("123");
user.setSay("Hello world !");
dataMap.put("user", user);
// dataMap.put("dataMap", dataMap);
// 放入一个是否操作成功的标识
dataMap.put("success", true);
// 返回结果
// varm =new String("just check string");
// dataMap.put("checkstring",varm);
varm = new String("just 22");
return SUCCESS;
}
public Map<String, Object> getDataMap() {
return dataMap;
}
3.浏览器中调用相应的action,可以看到返回的json对象
运行结果:
{"dataMap":{"success":true,"user":{"id":"123","name":"JSONActionStruts2","password":"123","say":"Hello world !"}}}