Struts2与Ajax联合,返回list的问题

     最近在做一个小系统,在尝试用Struts2框架下用Ajax技术进行异步刷新。主要配置如下:


    Struts的配置文件:

    <package name="ajax" namespace="/" extends="json-default">
    
            <action name="userJSONAction_*" method="{1}" class="userAction">
                <result type="json">
                    <param name="includeProperties">
                        message,list.*
                    </param>
                </result>
                
            </action>
    </package>

   第一次,尝试直接返回一个list

   后台action的代码

  List<VoteSubitem> darenList;

   public List<DarenShow> getList() {
        return list;
   }

   action(){

        darenList = new ArrayList<VoteSubitem>();            
        darenList =    voteSubitemService.findByVoteName("达人秀")

}

 

 报错,报错,好像是缺少包,就把 commons-beanutils-1.7.0.jar、commons-lang.jar、ezmorph-1.0.3.jar 、


 还是报错

就尝试用JSONArray 来返回一个字符串也可以,但是加上下面两句话后,还是报错

//        JSONArray jsonArray = JSONArray.fromObject(list);
//        String json = jsonArray.toString();

 报错信息如下:

Method public java.lang.String org.apache.commons.lang.exception.NestableRuntimeException.getMessage(int) threw an exception when invoked on net.sf.json.JSONException: There is a cycle in the hierarchy!
The problematic instruction:
----------
==> ${msgs[0][0]} [on line 76, column 25 in org/apache/struts2/dispatcher/error.ftl]
----------

Java backtrace for programmers:
----------
freemarker.template.TemplateModelException: Method public java.lang.String org.apache.commons.lang.exception.NestableRuntimeException.getMessage(int) threw an exception when invoked on net.sf.json.JSONException: There is a cycle in the hierarchy!


 去网上找了半天,又试验了半天,终于让我找到问题的原因了,因为javabean VoteSubitem 中有关联主表的外键,在json的过程中,会产生来回的调用循环,从而导致了There is a cycle in the hierarchy!的产生,我重新建立了一个新的javabean 然后重新用第一种方法


代码如下:

    private List<DarenShow> list;
    
    public List<DarenShow> getList() {
        return list;
    }

    /** 用ajax的方式获取达人信息*/
    public String listDaren() throws Exception {
        List<VoteSubitem> darenList = new ArrayList<VoteSubitem>();            
        darenList =    voteSubitemService.findByVoteName("达人秀");
        System.out.println(darenList.size());
        
        list = new ArrayList<DarenShow>();
        
        for(VoteSubitem v : darenList){
            DarenShow ds = new DarenShow();
            ds.setName(v.getArticle());
            ds.setPhotosrc(v.getFilePath());
            ds.setVideosrc(v.getFilePath2());
            list.add(ds);
        }

        Struts的配置文件不变,这样就成功了,希望能够给大家一点点的帮助。

  




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值