zoukankan      html  css  js  c++  java
  • freemarker 直接使用List来遍历set集合,可能会报错

    转摘:http://www.javaweb1024.com/java/JavaWebzhongji/2015/04/08/528.html

    freemarker  直接使用List来遍历set集合,可能会报错! 错误如下 

    Java代码

    private Set<Article> articles = new HashSet<Article>();

    Freemarker中遍历

    [#list category.articles?chunk(5) as article1]
         <div>
             <ul>
                  [#list article1 as article ]
                    [#assign articleDesc=i18n_description(article.articleDescriptions,true)/]
                    [#if articleDesc!=null]
             ${abbreviate(articleDesc.title, 80, "...")}
             [/#if]
                [/#list]
              </ul>
          </div>
     [/#list]

     报错信息

    Underlying collection is not a list, it's org.hibernate.collection.internal.PersistentSet

    freemarker.template.TemplateModelException: Underlying collection is not a list, it's org.hibernate.collection.internal.PersistentSet

             at freemarker.ext.beans.CollectionModel.get(CollectionModel.java:127)

             at freemarker.core.SequenceBuiltins$chunkBI$ChunkedSequence$1.get(SequenceBuiltins.java:792)

             at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:176)

             at freemarker.core.Environment.visit(Environment.java:428)

             at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)

             at freemarker.core.Environment.visit(Environment.java:221)

             at freemarker.core.MixedContent.accept(MixedContent.java:92)

             at freemarker.core.Environment.visit(Environment.java:221)

             at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)

             at freemarker.core.Environment.visit(Environment.java:428)

             at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)

             at freemarker.core.Environment.visit(Environment.java:221)

             at freemarker.core.MixedContent.accept(MixedContent.java:92)

             at freemarker.core.Environment.visit(Environment.java:221)

             at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)

             at freemarker.core.Environment.visit(Environment.java:221)

             at freemarker.core.MixedContent.accept(MixedContent.java:92)

             at freemarker.core.Environment.visit(Environment.java:221)

             at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)

             at freemarker.core.Environment.visit(Environment.java:221)

             at freemarker.core.MixedContent.accept(MixedContent.java:92)

             at freemarker.core.Environment.visit(Environment.java:221)

             at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:167)

             at freemarker.core.Environment.visit(Environment.java:428)

             at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)

             at freemarker.core.Environment.visit(Environment.java:221)

             at freemarker.core.Environment$1.render(Environment.java:246)

             at com.eecart.template.directive.BaseDirective.setLocalVariable(BaseDirective.java:184)

             at com.eecart.template.directive.ArticleCategoryRootListDirective.execute(ArticleCategoryRootListDirective.java:51)

             at freemarker.core.Environment.visit(Environment.java:274)

             at freemarker.core.UnifiedCall.accept(UnifiedCall.java:126)

             at freemarker.core.Environment.visit(Environment.java:221)

    解决方案:

    不直接使用 articles

    @Transient

       public List<Article> getMyArticles(){

          List<Article> list = new ArrayList<Article>(articles);

          return list;

       }

  • 相关阅读:
    FusionCharts ScrollColumn2D图
    Java Web项目部署Tomcat运行出错
    Eclipse部署Java Web项目到Tomcat出错
    JavaScript过滤特殊字符
    pl/sql 在一个程序块里打印日志输出到表格
    Java中过滤出字母、数字和中文的正则表达式
    pl/sql 程序块里打印问题
    C++函数的Boost内存池性能介绍
    boost内存池的使用介绍
    内存管理 Boost::singleton_pool
  • 原文地址:https://www.cnblogs.com/zihan1120/p/4410008.html
Copyright © 2011-2022 走看看