struts2中的json格式数据怎么传到页面 js怎么获取得到
2个回答
2016-07-30 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
struts2中的json格式数据传到页面的方法:
思路:后台action要把传递到页面的属性封装到map中,然后封装好的数据将会被Struts2转换成JSON字符串。
1、action层的代码:
public class JsonAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private Map<String,Object> dataMap;
private String key = "Just see see";
public String json() {
// dataMap中的数据将会被Struts2转换成JSON字符串,所以这里要先清空其中的数据
dataMap = new HashMap<String, Object>();
User user = new User();
user.setName("张三");
user.setPassword("123");
dataMap.put("user", user);
// 放入一个是否操作成功的标识
dataMap.put("success", true);
// 返回结果
return SUCCESS;
}
public Map<String, Object> getDataMap() {
return dataMap;
}
//设置key属性不作为json的内容返回
@JSON(serialize=false)
public String getKey() {
return key;
}
}
2、配置aciton,在struts.xml中的写法如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="json" extends="struts-default,json-default" >
<action name="json" class="json.JsonAction" method="json">
<result type="json">
<!-- 这里指定将被Struts2序列化的属性,该属性在action中必须有对应的getter方法 -->
<param name="root">dataMap</param>
</result>
</action>
</package>
</struts>
3、最终的输出结果:
{"success":true,"user":{"name":"张三","password":"123"}}
4、用js来解析:使用现成的JSON.parse() 来解析即可。
JSON.parse() 方法可以将一个 JSON 字符串解析成为一个 JavaScript 值。
思路:后台action要把传递到页面的属性封装到map中,然后封装好的数据将会被Struts2转换成JSON字符串。
1、action层的代码:
public class JsonAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private Map<String,Object> dataMap;
private String key = "Just see see";
public String json() {
// dataMap中的数据将会被Struts2转换成JSON字符串,所以这里要先清空其中的数据
dataMap = new HashMap<String, Object>();
User user = new User();
user.setName("张三");
user.setPassword("123");
dataMap.put("user", user);
// 放入一个是否操作成功的标识
dataMap.put("success", true);
// 返回结果
return SUCCESS;
}
public Map<String, Object> getDataMap() {
return dataMap;
}
//设置key属性不作为json的内容返回
@JSON(serialize=false)
public String getKey() {
return key;
}
}
2、配置aciton,在struts.xml中的写法如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="json" extends="struts-default,json-default" >
<action name="json" class="json.JsonAction" method="json">
<result type="json">
<!-- 这里指定将被Struts2序列化的属性,该属性在action中必须有对应的getter方法 -->
<param name="root">dataMap</param>
</result>
</action>
</package>
</struts>
3、最终的输出结果:
{"success":true,"user":{"name":"张三","password":"123"}}
4、用js来解析:使用现成的JSON.parse() 来解析即可。
JSON.parse() 方法可以将一个 JSON 字符串解析成为一个 JavaScript 值。
推荐于2018-03-08
展开全部
因为response写入的是字符串,需要你在前台js使用eval函数将字符串转换成json对象,才可以使用data.results的调用
使用struts2的话,可以考虑使用struts2集成的返回json功能,不用写入到response:
1、在配置文件中,定义package的extends,<package name="ajaxAction" extends="json-default">;
2、下面的infoDxt就是我在infoDxtAction中的一个bean,struts2会自动的将该对象转换成json,而且bean里面还可以使用@JSON(format="yyyy-MM-dd") 这种标注方式,指定json中的格式
<action name="AjaxDxtShow" class="infoDxtAction" method="show">
<result type="json">
<param name="root">infoDxt</param>
</result>
</action>
3、针对上面的配置,在action中写下show方法就好了,不能是void方法,需要返回值
使用struts2的话,可以考虑使用struts2集成的返回json功能,不用写入到response:
1、在配置文件中,定义package的extends,<package name="ajaxAction" extends="json-default">;
2、下面的infoDxt就是我在infoDxtAction中的一个bean,struts2会自动的将该对象转换成json,而且bean里面还可以使用@JSON(format="yyyy-MM-dd") 这种标注方式,指定json中的格式
<action name="AjaxDxtShow" class="infoDxtAction" method="show">
<result type="json">
<param name="root">infoDxt</param>
</result>
</action>
3、针对上面的配置,在action中写下show方法就好了,不能是void方法,需要返回值
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询