首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

Struts2 + ajax + json 相关的有关问题

2012-06-07 
Struts2 + ajax + json 相关的问题action类代码Java code public class CategoryAction extends ActionSup

Struts2 + ajax + json 相关的问题
action类代码

Java code
 public class CategoryAction extends ActionSupport {    private List<Category> subcates;    //。。。。省略get/set方法    public String getsubcates(){    subcates=categoryManger.getSubCates(pid);    return SUCCESS; [color=#FF0000]//注意此处[/color]    } }


action的配置:
XML code
     <package name="json"  extends="json-default" >        <action name="getsubcatesaction" class="categoryAction" method="getsubcates">            <result name="success" type="json">                <param name="includeProperties">                    subcates\[\d+\]\.id,subcates\[\d+\]\.name                </param>            </result>        </action>    </package>


jsp页面中 js代码:

JScript code
        function addsubcotes(pid){             alert(pid);            ajaxUtil("getsubcatesaction.action?pid="+pid,false,true,null,true,                function(data){                    alert(data);                     var jsonObject = eval('(' + data + ')');                    var select = document.getElementById("subcate");                    select.options.length=0;//清空select                    alert(jsonObject.subcates);                    for(var i = 0;i<jsonObject.subcates.length;i++){                        var category = list.subcates[i];                        slect.add(new Option(category.name,category.id));                    }                }            );        }


问题:正确的情况下应该是在js中获得List<Category>,结果返回的居然是 “success"字符串,也就是action 的result的name。
不知道怎么个情况,平常这样写都没问题,今天怎么就错了呢?请大神解救。

[解决办法]
<param name="includeProperties">
subcates\[\d+\]\.id,subcates\[\d+\]\.name
</param>

<param name="root">这是我一般的用法
[解决办法]
pid 你传到后台了吗?
[解决办法]
debug 断点调试一下 如果后台没问题 是不是前端 接收对象有问题 firebug 调试 获取前端对象是什么
[解决办法]
控制台-〉所有-〉单击连接-〉响应
[解决办法]
我觉得你在前台返回的success,应该是Getsubcatesaction尖中的方法getsubcates返回的字符串(return SUCCESS),你通过ajax调用getsubcates方法,返回到前台的应该是经过json处理的字符串吧,比如你返回的是list,应该把list转为json字符串,再return出来,由前台ajax捕获,再做eval解析,再输出来。

热点排行