freemarker 直接使用List來遍歷set集合,可能會報錯

轉摘:http://www.javaweb1024.com/java/JavaWebzhongji/2015/04/08/528.htmlhtml

freemarker  直接使用List來遍歷set集合,可能會報錯! 錯誤以下 java

Java代碼web

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

Freemarker中遍歷ui

[#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]

 報錯信息hibernate

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

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

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

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

         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;

   }

 

 

相關文章
相關標籤/搜索