当前位置:编程学习 > JAVA >>

struts.xml配置 Json返回值勤 <param name="root">XX</param>不理解是什么意思

<param name="root">XX</param>;谁能帮我解释一下什么意思 --------------------编程问答-------------------- http://www.mkyong.com/struts2/struts-2-param-tag-example/ --------------------编程问答-------------------- 这是常用配置,
xx表示返回的json对象,root表示返回对象的层级为根部,,因为一般对象可以直接获得更多的对象,比如xx.getParent()  程序会默认以为你要返回的json类型为该对象下的所有属性及对象,以及对象的对象,对象的属性,,,一直下去。
所以如果不指定name="root" 这就会导致死循环,内存溢出了。。。 --------------------编程问答--------------------
引用 2 楼 ch656409110 的回复:
这是常用配置,
xx表示返回的json对象,root表示返回对象的层级为根部,,因为一般对象可以直接获得更多的对象,比如xx.getParent()  程序会默认以为你要返回的json类型为该对象下的所有属性及对象,以及对象的对象,对象的属性,,,一直下去。
所以如果不指定name="root" 这就会导致死循环,内存溢出了。。。

解释得很好,懂了。
不过测试的时候还是碰到了一个问题,
以下是JSP页面的具体访问代码,
                  $.getJSON("user/user!returnUser",function(data){ 
         $("#result").append("id:"+data.user.id+" ")
                         .append("name:"+data.user.name);
       });


action类
                 private User user;
                 //省略getter(),setter()
               public String returnUser() {
user = new User();
user.setId(1);
user.setName("user");
System.out.println(user.getName());
return "user";
}

struts.xml
                <result name="user" type="json">
       <param name="root">user</param>
</result>

在struts.xml加上<param name="root">user</param>这一句,Jsp页面却不能正常显示了,按理说应该也能正常显示的啊 --------------------编程问答-------------------- 楼主的 <action>配置的是extends="json-default" 吗??
还有 项目lib中有加 struts-json-plugin.jar吗??? --------------------编程问答--------------------
引用 4 楼 ch656409110 的回复:
楼主的 <action>配置的是extends="json-default" 吗??
还有 项目lib中有加 struts-json-plugin.jar吗???

配置什么的都是对的,没问题,都测试通过
<result name="user" type="json">
       <param name="root">user</param>
</result>
就是加入<param name="root">user</param>这句后,前台就访问不到user的属性了。没加就能访问到 --------------------编程问答--------------------
引用 5 楼 Isenhart 的回复:
引用 4 楼 ch656409110 的回复:楼主的 <action>配置的是extends="json-default" 吗??
还有 项目lib中有加 struts-json-plugin.jar吗???
配置什么的都是对的,没问题,都测试通过
<result name="user" type="json">
       <param name="root"……



这是返回的是json格式,不是user对象,肯定访问不到user的属性。 --------------------编程问答-------------------- [align=left]                  $.getJSON("user/user!returnUser",function(data){ 
         $("#result").append("id:"+data.user.id+" ")
                         .append("name:"+data.user.name);
        });[/align]
直接$("#result").append("id: " + data.id + " ").append("name: " + data.name);就可以了,因为现在的user被转为 json 字符串了,你用火狐浏览器的firebug就可以看见这个json字符串。
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,